【问题标题】:Lucene.Net IndexWriter multiple applicationLucene.Net IndexWriter 多应用
【发布时间】:2013-12-18 08:12:23
【问题描述】:

我目前正在开展一个项目,在将大量文档(过程缓慢)插入到 Lucene.Net 之前对其进行索引。

为了使索引更快,我想复制 Windows 服务以仅在我的服务中保留一个线程。这意味着我将有多个 IndexWriter,这是不可能的,因为有锁。此外,服务不会在同一台服务器上,这意味着共享内存是不可能的。

有什么方法可以安全地做到这一点吗?如果是怎么办?

提前感谢您的回答。

莱尼

【问题讨论】:

  • 你的硬件是什么? IndexWriter 可以处理调用 AddDocument 的多个线程,因此您可以运行多个线程来处理输入并生成文档。另外,文档生成速度慢是什么原因?
  • 缓慢的部分是将Doc/Docx/PDF转换为文本,然后我需要将其添加到Lucene文档中。我没有多线程应用程序,这意味着我最终没有使用相同的 IndexWriter。我仍然坚持这一点。有什么想法吗?

标签: c# lucene.net lucene


【解决方案1】:

每个作者都应该写入自己的目录,您可以使用 IndexWriter.AddIndexesNoOptimize 将它们合并为最后一步

将索引数组中的所有段合并到该索引中。

这可用于并行化批量索引。大型文档集合可以分解为子集合。每个子集合可以在不同的线程、进程或机器上并行索引。然后可以通过这种方法合并子集合索引来创建完整的索引。

【讨论】:

  • 谢谢,我会在有时间处理该项目时尽快尝试。我会告诉你的。
猜你喜欢
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多