不要在 IndexWriters 之间共享 IndexWriterConfig 实例

问题描述 投票:0回答:0

我正在尝试结合 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 中。如果我使用它两次,会发生什么?

java spring lucene
© www.soinside.com 2019 - 2024. All rights reserved.