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,如何通过网络共享索引存储文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何通过网络发送编码数据?

拔刺 | 如何通过人工神经网络实现图像识别?

如何通过套接字检查特定网络中的IP是否存在?

如何通过网络允许/拒绝数据包[关闭]

如何通过对网络流量的统计分析,判断是不是有黑客攻击网络

如何通过本地网络共享 localhost 端口 [重复]