java - 使用 lucene IndexWriter 进行多线程处理

标签 java multithreading lucene

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

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

Exception in thread "pool-1-thread-2" org.apache.lucene.util.SetOnce$AlreadySetException: The object cannot be set twice!

来自

IndexWriter writer = new IndexWriter(directory, indexWriterConfig);

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

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

最佳答案

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

关于java - 使用 lucene IndexWriter 进行多线程处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108992/

相关文章:

java - 如何在 3.0.2 中检索 Lucene 索引的文档总数?

java - 获取 Apache Lucene 中的字段类型

java - 最佳搜索字符串java中的子字符串

java - 如何重写 mongo 驱动程序中的 ObjectId 生成器来生成自定义 objectId?

java - Java 中的 "implements Runnable"与 "extends Thread"

winforms - BufferedGraphicsContext 错误

lucene - SOLR 和自然语言解析 - 我可以使用它吗?

java - Java 解释器和 JVM 之间的区别

java - Java中实参和形参的区别

c - 11线程程序段错误