lucene.net-如何非常频繁地更新索引?

lucene.net-如何非常频繁地更新索引?,lucene,lucene.net,azure-queues,Lucene,Lucene.net,Azure Queues,我有一个Azure WebJob,其队列接收要处理的项目。每秒可以处理许多项。队列同时处理大约20个项目 我想用Lucene.net索引这些项目 启动IndexWriter、调用Optimize()并在每个到达队列的项目上处理它会花费太多时间。我觉得我做错了 我希望这些物品能尽快准备好进行搜索 多线程使用一个IndexWriter可以吗 我是否需要调用Optimize(),或者永远不要调用它,或者在每天运行一次的单独进程上调用它(例如),这样可以吗 如果我只有一个IndexWriter并且从不处

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

我想用Lucene.net索引这些项目

启动IndexWriter、调用Optimize()并在每个到达队列的项目上处理它会花费太多时间。我觉得我做错了

我希望这些物品能尽快准备好进行搜索

多线程使用一个IndexWriter可以吗

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

如果我只有一个IndexWriter并且从不处理它(程序退出时除外),我会在缓冲区中保留新项目吗

在处置IndexWriter之前,是否可以搜索添加了IndexWriter的新项目

多谢各位

  • IndexWriter是线程安全的,从不同线程调用是安全的
  • 不打电话也没关系。(如果默认合并策略不适用于您,您可以编写自定义合并策略。)
  • 您将通过调用commit将所有文档刷新到磁盘。没有必要抛弃你的作家。重新使用它
  • 一旦读者看到文档,就可以对其进行搜索。这发生在您提交编写器并重新打开阅读器之后。您可以通过从
    IndexWriter.OpenReader
    抓取一个读卡器,使用近实时(NRT)搜索,在提交它们之前读取它们
  • IndexWriter是线程安全的,从不同线程调用是安全的
  • 不打电话也没关系。(如果默认合并策略不适用于您,您可以编写自定义合并策略。)
  • 您将通过调用commit将所有文档刷新到磁盘。没有必要抛弃你的作家。重新使用它
  • 一旦读者看到文档,就可以对其进行搜索。这发生在您提交编写器并重新打开阅读器之后。您可以通过从
    IndexWriter.OpenReader
    抓取一个读卡器,使用近实时(NRT)搜索,在提交它们之前读取它们