【问题标题】:lucene.net - how to update an index very frequently?lucene.net - 如何非常频繁地更新索引?
【发布时间】:2015-03-03 20:14:23
【问题描述】:

我有一个带有队列的 Azure WebJob,它接收要处理的项目。每秒可以处理许多项目。 Queue 同时处理大约 20 个项目。

我想用 Lucene .net 索引项目。

启动一个 IndexWriter,调用 Optimize() 并将其处理到每个进入队列的项目上需要太多时间。感觉自己做错了。

我希望这些项目尽快可供搜索。

可以为多个线程使用一个 IndexWriter 吗?

我是否需要调用 Optimize() 或者从不调用它是否可以,或者在每天运行一次的单独进程上调用它(例如)?

如果我只有一个 IndexWriter 并且从不 Dispose 它(程序退出时除外),我会有新项目卡在缓冲区上吗?

在释放 IndexWriter 之前,是否可以搜索使用 IndexWriter 添加的新项目?

谢谢。

【问题讨论】:

    标签: lucene lucene.net azure-queues


    【解决方案1】:
    1. IndexWriter 是线程安全的,可以安全地从不同线程调用。
    2. 永远不要调用优化是可以的。 (如果默认设置不适合您,您可以编写自定义合并策略。)
    3. 您将通过调用 commit 将所有文档刷新到磁盘。没有必要处置你的作家。改为重复使用。
    4. 一旦读者看到文档,就可以搜索它们。这发生在您提交作者并重新打开阅读器之后。您可以通过使用近实时 (NRT) 搜索从 IndexWriter.OpenReader 获取阅读器,在提交之前阅读它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多