【问题标题】:Zend_Search_Lucene, how to share an index storage folder over networkZend_Search_Lucene,如何通过网络共享索引存储文件夹
【发布时间】:2010-08-23 16:20:53
【问题描述】:

我在两台不同的服务器上运行 web 应用程序并使用负载平衡,并使用 Zend_Search_Lucene 来索引文档。

现在我面临索引问题,用户通过服务器 #1 访问站点并存储信息,Zend_Search_Lucene 仅存储索引服务器 #1。

因此,一旦另一个用户通过服务器 #2 访问该站点并进行搜索,则只有服务器 #2 中的索引会检索。

有没有办法共享一个索引存储文件夹供两台服务器访问? 或者有没有办法将索引存储在mysql数据库中,而不是文件系统中?

【问题讨论】:

    标签: php lucene load-balancing nfs zend-search-lucene


    【解决方案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 的公司应用程序,我只能推荐它。它运行速度快,可靠,非常方便,但也非常灵活和可定制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    相关资源
    最近更新 更多