gpt4 book ai didi

c# - 在应用程序的整个生命周期内保持 Lucene IndexWriter 和 IndexSearcher 打开是一种好习惯吗

转载 作者:搜寻专家 更新时间:2023-10-31 19:57:31 26 4
gpt4 key购买 nike

在 Lucene 文档中指出,在整个应用程序中使用 IndexWriter 和 IndexSearcher 的一个实例是最快的。

目前我有一个 IndexWriter 的静态实例一直打开,还有一个 IndexSearcher 的静态实例一直保持打开状态,但如果IndexWriter 对索引执行任何 CRUD 操作。我在我的索引管理类上实现了一个 Dispose 方法,该方法在应用程序结束时关闭 IndexWriterIndexSearcher (但是它是一个网络应用程序,所以这可能要运行几个月没有被调用)。

这听起来像是做事的合理方式吗?而且使用静态实例是否会出现多线程问题..? IE。我应该在使用时锁定我的编写器和搜索器吗?

最佳答案

Lucene 索引编写器、读取器和搜索器是线程安全的(参见 2nd note of the doc of IndexWriter1st of the doc of IndexSearcher ),因此跨多个线程重用相同的实例没有问题。

根据您对如何管理索引编写器和搜索器的描述,我认为您正在重新实现 Lucene 的两个实用程序类,您可能会发现它们有帮助:NRTManagerSearcherManager这使得管理近乎实时的搜索器变得非常容易。

关于c# - 在应用程序的整个生命周期内保持 Lucene IndexWriter 和 IndexSearcher 打开是一种好习惯吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com