2009-12-15 124 views
5

我使用PHP来访问Solr,我不知道一件事。Solr PHP客户端vs file_get_contents?

为什么要使用Solr的PHP客户端时,我可以使用:

$serializedResult = file_get_contents(
         'http://localhost:8983/solr/select?q=niklas&wt=phps'); 

得到的结果数组,然后打印出来?我真的没有区别。 PHP客户端有更丰富的功能吗?

回答

4

我想是因为以下几个原因:

  • 灵活性
  • 错误处理
  • 安全问题
  • 扩展性

所有问题都是这些预先制作脚本的头痛构架。所以如果有某种解决方案,我会建议你去做,而不是从你自己的事情做起。

此外,由于这些脚本和框架具有良好的社区支持,因此存在较少的错误,安全问题等等。

+0

但是当使用file_get_contents时会出现什么问题?它发送,我尊重?它适用于每个浏览器等,只是没有得到什么安全/灵活性问题,这可能会给.. – ajsie 2009-12-15 13:56:28

+0

重申Sarfraz的评论,你可以做file_get_contents。但是你仍然需要进行解析,如果你使用客户端库,你会得到他指定的4件事情! – 2009-12-16 13:33:24

0

我想solr客户端只是解析结果,并为您提供传递参数的方便方法(为您构建URL等)。

0

要使用,file_get_contents()...您的PHP必须启用“allow_url_open”。如果你在某些主机上托管你的网站,那么他们不允许使用这个功能,因为他们保持关闭这个设置。

0

但是,在某些情况下,执行file_get_contents()可能有意义。 SolrClient没有任何关于字段崩溃的东西(这是一个补丁在trunk中不可用),所以如果我不能使用PECL库,我必须编写自己的模拟SolrClient和SolrQuery的类。

1

solr-php-client库实际上有一个适用于file_get_contents(@see Apache_Solr_HttpTransport_FileGetContents)的适配器,另外还有一个适用于Curl的适配器。 solr-php-client库是一个精心制作的框架,它可以让你做更多的事情,而不是发布带有参数的URL,以便完成搜索。 SPC提供可预测性,可扩展性和安全性。此外,solr-php-client写入Zend Framework标准,所以它赞扬任何ZF项目。

如果我在选择维护良好的社区支持项目和编写自己的脚本之间做出选择,那么我会选择维护良好的社区支持项目。如果你的需求超出了这个项目的范围,你仍然可以编写你自己的脚本,但是再次,这种类型的库已经建立,所以你可以无痛地扩展它。