2012-10-08 153 views
4

我要实现我的一个项目faceted search。我正在使用PHP5,MysqlSymfony 1.4。显然,社区指向Apache Solr,这似乎正是我想要完成的事情。面搜索用(出)Solr的

的问题是,该网站将成为现场的一个托管服务提供商不允许我设置Solr(它是一个共享的托管环境,既不允许,也不TomcatSolr达和运行)。

所以,请你给我方向上可能的替代品或如果在这样的环境中的方法来设置Solr

编辑
我的托管服务提供商,既不支持也不SOLR解决方案opensolr。一般来说,我不能使用我的环境连接到同一台服务器或远程进程。看来唯一可用的选择是使用Zend_Search_Lucene。那么这是否支持多面搜索?或者如果您有其他选择,请分享!我感到处于无处不在的状态!

EDIT 2
由于这个问题打开了大约一个星期,从到目前为止我给出的答案惊奇(失望),没有图书馆(服务)的PHP可用来实现面搜索。似乎无论是需要手动实施还是使用下面提供的解决方案

回答

1

性能也不会很大,不讨论缩放,但你总是可以创造超过HTTP反向HTTP隧道。基本上,代替Web服务器打开到Solr服务器的出站连接,Solr服务器连接到Web服务器以请求作业并发布作业结果。

你需要什么做:

  1. 浏览器后的搜索查询时,查询数据库被简单地排队。
  2. 反向代理定期连接到Web服务器(通过普通的ol端口80)以从作业队列中获取查询列表,将查询传递给Solr服务器,并将结果发回给Web服务器。
  3. 浏览器定期轮询完成的搜索结果的Web服务器。

奖励标志:如果您的服务器允许并发请求处理,请使用long polling来提高延迟。

总之,硬着头皮移动到一个像样的主机。

+0

这是一个非常有趣的方法。事实上,我现在甚至没有“反向HTTP隧道”的存在。正如你所想象的,我不能在我的可怜的环境中使用这样的服务器...... – pankar

+0

@pankar:是的,反向代理和Solr服务器必须存在于当前服务器之外。但是,您当前的Web服务器可以保持原样;工作队列的管理可以用普通的PHP编写而不需要任何花哨的技巧。我不太确定哪一个更容易,实施家庭酿造分面搜索或自制工作排队。 –

2

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

+0

感谢您的输入。这些解决方案需要在一些端口上畅通无阻的出站连接(即8080)。我不确定它是否支持我的共享主机环境。我会给他们发邮件问他们。此外,在此设置中可能存在性能问题。我赞成在同一台服务器上使用开源解决方案(甚至是定制)(最好的情况下) – pankar

0

尽量避免Zend_Search_Lucene的,它不是真快。 (这是相当不错的,因为它是在PHP中实现的,并且不能作为守护进程运行)

托管Solr建议听起来像一个很好的选择 - 如果你不愿意改变主机。

+0

感谢您的反馈。就像我在编辑时所说的那样,我只是不能使用替代品作为opensolr,因为我无法建立到任何端口的出站连接......!@#$ shared hosting ... – pankar

+0

请注意,要与solr交谈,您只需要Http ,所以你可以通过一个Http代理(如果有的话)。 –

+0

它是否是进程间通信,http或SOAP/XML无关紧要。共享主机阻止所有端口的出站流量。 – pankar