【问题标题】:Lucene.Net maintaining indexes when using MultiSearcherLucene.Net 在使用 MultiSearcher 时维护索引
【发布时间】:2009-10-14 13:34:17
【问题描述】:

为了使我的索引保持最新,我需要每 5 分钟添加/修改一次搜索索引。我设置它的方式是使用 2 个索引,一个在 Full 目录中,一个在 Incremental 目录中,并且我使用 MultiSearcher 来搜索它们。

我现在正在编写一个过程来维护索引。我正在做的是将最后一个索引日期传递给存储过程,并且数据库基于数据库中的“UpdatedOn”字段返回所有新的/修改的记录。然后,我遍历 2 个目录,为每个目录打开一个 IndexReader,并根据主键的 TermQuery 删除文档。然后我使用 IndexWriter 将记录添加到增量索引并对其进行优化。

但是,当我进行后续搜索时,我知道索引中的记录没有被返回。

我做的索引维护错了吗?

【问题讨论】:

    标签: indexing lucene.net


    【解决方案1】:

    您的 {Multi}IndexSearcher 是否在搜索界面上被关闭并重新打开?出于性能原因,我看到一些应用程序将 SearchIndexer 对象持久保存在内存中,以避免每次搜索时重新打开对象及其底层目录的开销,但是,这样做时,IndexSearcher 不会获取更改/添加到基础指数。

    我不确定这是否是您的情况 - 但通常当我看到搜索器没有拾取新文档时,这是因为在将项目添加到索引之前打开了搜索器.. . 只是一个想法。

    【讨论】:

    • 是的,每次搜索后我都会关闭 IndexSearcher。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多