使用(out)Solr进行分面搜索

时间:2012-10-08 11:35:54

标签: php solr symfony-1.4 shared-hosting faceted-search

我想为我的项目实施faceted search。我正在使用PHP5MysqlSymfony 1.4。显然,社区指向Apache Solr,这似乎完全符合我的目标。

问题是该网站将在托管服务提供商上发布,不允许我设置Solr(它是一个共享托管环境,既不允许Tomcat也不允许{{1要正常运行。

那么请您指点可能的替代方案,或者是否有办法在这样的环境中设置Solr

修改
我的托管服务提供商既不支持Solr也不支持SOLR解决方案。一般情况下,我无法使用我的环境连接到同一服务器或远程服务器上的进程。似乎唯一可用的选项是使用Zend_Search_Lucene。那么这支持分面搜索吗?或者,如果您有其他选择,请分享!我觉得自己处于不知名的地方!

编辑2
由于这个问题从给出的答案开始大约一个星期,我感到惊讶(并且失望)PHP中没有可用于实现分面搜索的库(服务)。似乎要么需要手动实现,要么使用下面提供的解决方案

3 个答案:

答案 0 :(得分:2)

更改主机,或在其他地方托管Solr索引 - 例如,快速搜索显示http://www.opensolr.com/提供Solr托管,毫无疑问其他许多人。

答案 1 :(得分:1)

性能不会很好,也不讨论扩展,但您始终可以通过HTTP创建反向HTTP隧道。基本上,不是Web服务器打开到Solr服务器的出站连接,而是Solr服务器连接到Web服务器以请求作业和发布作业结果。

您需要做什么:

  1. 浏览器发布搜索查询,查询只是在数据库中排队。
  2. 反向代理定期连接到Web服务器(通过普通的端口80)以从作业队列中获取查询列表,将查询传递给Solr服务器,并将结果POST回Web服务器。
  3. 浏览器定期轮询Web服务器以查找完成的搜索结果。
  4. 奖励标记:如果您的服务器允许并发请求处理,请使用long polling来改善延迟。

    简而言之,咬紧牙关,转移到一个体面的主人。

答案 2 :(得分:0)

尽量避免Zend_Search_Lucene,它并不是很快。 (鉴于它在Php中实现并且不作为守护进程运行,它非常好)

如果你不愿意改变主持人,保罗建议听起来是个不错的选择。