- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 Lucene 文档中指出,在整个应用程序中使用 IndexWriter 和 IndexSearcher 的一个实例是最快的。
目前我有一个 IndexWriter
的静态实例一直打开,还有一个 IndexSearcher
的静态实例一直保持打开状态,但如果IndexWriter
对索引执行任何 CRUD 操作。我在我的索引管理类上实现了一个 Dispose 方法,该方法在应用程序结束时关闭 IndexWriter
和 IndexSearcher
(但是它是一个网络应用程序,所以这可能要运行几个月没有被调用)。
这听起来像是做事的合理方式吗?而且使用静态实例是否会出现多线程问题..? IE。我应该在使用时锁定我的编写器和搜索器吗?
最佳答案
Lucene 索引编写器、读取器和搜索器是线程安全的(参见 2nd note of the doc of IndexWriter 或 1st of the doc of IndexSearcher ),因此跨多个线程重用相同的实例没有问题。
根据您对如何管理索引编写器和搜索器的描述,我认为您正在重新实现 Lucene 的两个实用程序类,您可能会发现它们有帮助:NRTManager和 SearcherManager这使得管理近乎实时的搜索器变得非常容易。
关于c# - 在应用程序的整个生命周期内保持 Lucene IndexWriter 和 IndexSearcher 打开是一种好习惯吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377572/
在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。 那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
在数据处理时,经常会因为index报错而发愁。不要紧,本次来和大家聊聊pandas中处理索引的几种常用方法。 1.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。假设
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我是一名优秀的程序员,十分优秀!