Solr PHP客户端vs file_get_contents?

时间:2009-12-15 13:47:40

标签: php full-text-search solr

我使用PHP访问Solr,我想知道一件事。

为什么我可以在使用时使用Solr PHP客户端:

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

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

5 个答案:

答案 0 :(得分:4)

我认为原因如下:

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

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

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

答案 1 :(得分:1)

solr-php-client库实际上有一个适用于file_get_contents的适配器(@see Apache_Solr_HttpTransport_FileGetContents),另外还有一个适用于Curl的适配器。 solr-php-client库是一个精心设计的框架,它允许您做的不仅仅是发布带有参数的URL,以便您可以完成搜索。 SPC提供可预测性,可扩展性和安全性。此外,solr-php-client编写为Zend Framework标准,因此它与任何ZF项目相称。

如果我在选择维护良好,社区支持的项目和编写自己不会优越的脚本之间做出选择,我会选择维护良好的社区支持项目。如果您有该项目之外的需求,您仍然可以编写自己的脚本,但同样,这种类库是构建的,因此您可以轻松地扩展它。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

但是,在某些情况下,执行file_get_contents()可能有意义。 SolrClient没有任何字段折叠(它是一个在主干中不可用的补丁)所以我必须编写我自己的类,它模仿SolrClient和SolrQuery,如果我不能用PECL库。