我正在尝试结合 Spring 和 Lucene,并制作了一个类型为
IndexWriterConfig
. 的 bean
我的代码就像
@Bean
Analyzer getAnalyzer() {
return new IKAnalyzer();
}
@Bean
IndexWriterConfig indexWriterCfg(Analyzer analyzer) {
return new IndexWriterConfig(analyzer);
}
public static IndexWriter getIndexWriter(String path,IndexWriterConfig iwc) {
Path indexPath = Paths.get(path);
File file = new File(path);
Directory directory = null;
directory = FSDirectory.open(indexPath);
return new IndexWriter(directory,iwc);
}
当我测试
@SpringBootTest
public class TestLucene {
@Autowired
IndexWriterConfig cfg;
@Test
void testIndexWriter() throws IOException {
IndexWriter iw1 = LuceneUtils.getIndexWriter("dir", cfg);
iw1.getDirectory().close();
IndexWriter iw2 = LuceneUtils.getIndexWriter("dir",cfg);
iw2.getDirectory().close();
}
}
抛出异常
java.lang.IllegalStateException:不要跨 IndexWriters 共享 IndexWriterConfig 实例
我已经知道IndexWriterConfig不允许共享,但是为什么?
我尝试使用相同的 IndexWriterConfig 创建两个 IndexWriters。我想知道为什么“不在 IndexWriters 之间共享 IndexWriterConfig 实例” 在 Lucene 中。如果我使用它两次,会发生什么?