Zend_Search_Lucene,如何通过网络共享索引存储文件夹
Posted
技术标签:
【中文标题】Zend_Search_Lucene,如何通过网络共享索引存储文件夹【英文标题】:Zend_Search_Lucene, how to share an index storage folder over network 【发布时间】:2010-08-23 16:20:53 【问题描述】:我在两台不同的服务器上运行 web 应用程序并使用负载平衡,并使用 Zend_Search_Lucene 来索引文档。
现在我面临索引问题,用户通过服务器 #1 访问站点并存储信息,Zend_Search_Lucene 仅存储索引服务器 #1。
因此,一旦另一个用户通过服务器 #2 访问该站点并进行搜索,则只有服务器 #2 中的索引会检索。
有没有办法共享一个索引存储文件夹供两台服务器访问? 或者有没有办法将索引存储在mysql数据库中,而不是文件系统中?
【问题讨论】:
【参考方案1】:好的,请不要伤害我,因为我不会给你一个确切的答案,而是给你一个替代方案。
请不要为此使用zend,它非常慢。相信我。它只是一个糟糕的实现,必须为每个搜索请求完全加载。只需做一些基准测试,您就会注意到。
lucene 确实支持分片(将索引分配到多台服务器并组合单独获取的结果)
它也支持复制,这对你来说会更好
所以真正有用的部分来了:
在http://lucene.apache.org/solr/ 上查看 solr
它的所有设置都包含使用码头的示例安装。
如果您不使用通配符字段并使用 java -jar start.jar
启动它,您几乎不需要做任何事情,只需自定义字段即可。
一旦服务器在我刚刚忘记的默认端口上运行,您就有了一个接口,您可以使用 http post 将新文档发送到该接口。 您可以从每个应用程序服务器的 php 中执行此操作。 如果您包含提交标志,则 solr 将索引它并提交更改。
您可以使用 http 接口和 solr 查询参数查询您的索引。然后你会得到一个整洁的 json 或 xml 格式文件。 如果您遇到任何负载问题,您可以复制您的服务器。
但是您的服务器将管理比使用 zend 多 1000 倍的请求,因为一切都已启动并正在运行,已加载 lucene 并且可以立即处理查询。
只需查看此分步教程,您就可以了: http://lucene.apache.org/solr/tutorial.html
如果你不喜欢所有这些并且想坚持使用zend:
数据库在本质上是不可能的,但您可以编写一个包装器。然而,这将是荒谬的。 这种情况下最好的办法就是建立一个网络文件系统!
任何问题,让我知道。
ps:当你遇到选择时,建议使用 dismax,在大多数情况下它会快很多。
【讨论】:
Solr Java Lucene 吗?我有一个当前使用 PHP Lucene(Zend 库)的应用程序,并计划更新到 Java Lucene 并使用 Java 桥。想法?! 是的,它的 100% java lucene。码头服务器作为应用程序服务器(替代方案是 tomcat 或其他)。您可以立即下载并开始的示例仅包括作为默认服务器的码头,它由 apache 以及***项目开发并与 lucene 密切合作。我重新设计了一个从商业产品事实查找器到 solr 的公司应用程序,我只能推荐它。它运行速度快,可靠,非常方便,但也非常灵活和可定制。以上是关于Zend_Search_Lucene,如何通过网络共享索引存储文件夹的主要内容,如果未能解决你的问题,请参考以下文章