使用 lucene IndexWriter 进行多线程处理



我正在使用lucene 6.3.0来创建索引器。它从一个文件夹读取集合,并创建到另一个文件夹的索引。这工作正常,但我想多线程地做,我的意思是,给定 2 个集合(c1 和 c2(,运行 2 个线程,每个线程都有一个集合和一个索引文件夹,这样,线程 1 将为集合 c1 创建一个索引到文件夹 i1,线程 2 将为集合 c2 创建一个索引到文件夹 i2。

我已经创建了一个 ThreadPool 类来管理它,但我得到一个:

线程"pool-1-thread-2"中的异常 org.apache.lucene.util.SetOnce$AlreadySetException:对象不能 设置两次!

它来自

IndexWriter

writer = new IndexWriter(directory, indexWriterConfig(;

但是,无论如何都会创建索引。

为什么我会收到此异常以及如何避免出现此异常?

您正在多个 IndexWriter 中重用相同的IndexWriterConfig实例。这是不允许的,您需要为每个索引编写器生成一个新实例。

最新更新