4

我想对我的项目实施分面搜索。我正在使用PHP5,MysqlSymfony 1.4. 显然,社区指向Apache Solr,这似乎正是我想要完成的。

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

那么,您能否就可能的替代方案给我指导,或者是否有办法Solr在这样的环境中进行设置?

编辑
我的托管服务提供商既不支持SOLR也不支持opensolr. 一般来说,我不能使用我的环境连接到同一服务器或远程服务器上的进程。似乎唯一可用的选项是使用Zend_Search_Lucene。那么这是否支持分面搜索?或者,如果您有其他选择,请分享!我感觉自己在茫茫人海中!

编辑 2
由于这个问题从到目前为止给出的答案中打开了大约一周,我很惊讶(也很失望)PHP 中没有可用的库(不是服务)来实现分面搜索。似乎这需要手动实现或使用下面提供的解决方案

4

3 回答 3

2

更改主机,或在别处托管 Solr 索引 - 例如,快速搜索显示http://www.opensolr.com/提供 Solr 托管,毫无疑问还有很多其他的。

于 2012-10-08T12:33:40.850 回答
1

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

你需要做什么:

  1. 浏览器发布一个搜索查询,该查询只是在数据库中排队。
  2. 反向代理定期连接到 Web 服务器(通过普通的 ol' 端口 80)以从作业队列中获取查询列表,将查询传递给 Solr 服务器,并将结果 POST 回 Web 服务器。
  3. 浏览器会定期轮询 Web 服务器以获取完成的搜索结果。

加分项:如果您的服务器允许并发请求处理,请使用长轮询来改善延迟。

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

于 2012-10-16T15:49:30.700 回答
0

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

Paul 建议的托管 Solr 听起来是一个不错的选择 - 如果您不愿意更改主机。

于 2012-10-10T19:31:13.567 回答