【问题标题】:Best way to perform online re-indexing of tables for Zend_Search_Lucene-powered search为 Zend_Search_Lucene 驱动的搜索执行在线重新索引表的最佳方式
【发布时间】:2010-08-10 16:44:50
【问题描述】:

我正在使用 Zend_Search_Lucene 对我的应用程序中几个不同表中的记录进行全文搜索。我刚刚实现了这个功能,目前索引是在应用程序部署后首次使用搜索功能的基础上构建的。这显然不是我在生产中想要的。

我正在寻找一种简单的方法来执行索引作为应用程序部署逻辑的一部分,然后每半小时左右执行一次添加/更新记录的增量索引。

我应该注意什么来实现这个?

感谢您提供的所有帮助。

【问题讨论】:

    标签: php deployment indexing zend-search-lucene


    【解决方案1】:

    不需要将索引作为部署的一部分。这里我建议一个解决方案。

    在您的应用程序中创建一个默认目录,例如 searchdata。在此内部为不同类型的数据创建单独的路径(例如,对于城市,文件夹为 city_index)。 在(您的应用程序的)配置文件中指定这些路径。 编写 php 脚本,以便读取表数据并建立索引。这些脚本使用配置路径来创建索引。 编写一个主脚本来运行所有这些脚本。

    在您的服务器上运行这些脚本一次。继续搜索(使用配置路径进行搜索)。 (第一次搜索没有索引)

    如果添加了一个新城市,那么在您添加该城市(模型函数)的代码中,数据库更新也会更新索引。还要优化索引文件,这将减少搜索时间。这个操作不是很频繁,所以实时更新不是问题。

    【讨论】:

    • 我喜欢在每次写入记录时添加到索引的想法。唯一的问题是我有一些记录类型(例如 cmets)可能比其他记录类型(例如用户)更频繁地添加。添加到索引和优化会影响文件系统,所以它非常慢。你还会推荐这种方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多