![](/img/trans.png)
[英]Lucene.net with IndexSearcher/IndexWriter in a Web Application
[英]Is it good practice to keep a Lucene IndexWriter & IndexSearcher open for the lifetime of an app
它在Lucene文档中指出,在整个应用程序中使用IndexWriter和IndexSearcher的一个实例最快。
目前,我一直都在打开一个静态的IndexWriter
实例,并且一直都在打开着一个IndexSearcher
的静态实例,但是如果IndexWriter
对索引执行任何CRUD操作,它都会被重建。 我已经在我的索引管理类上实现了Dispose方法,该方法在应用程序结束时关闭IndexWriter
和IndexSearcher
(但是它是一个Web应用程序,因此可能需要运行数月才能被调用)。
这听起来像做事的合理方式吗? 并且使用静态实例还会带来多线程问题吗? 即我应该在使用时锁定我的作家和搜索者吗?
Lucene索引编写器,阅读器和搜索器是线程安全的(例如,请参阅IndexWriter文档的第二个注释或IndexSearcher文档的1 个注释 ),因此在多个线程中重用同一实例没有问题。
根据有关如何管理索引作者和搜索者的描述,我认为您正在重新实现对Lucene有用的两个实用程序类: NRTManager和SearcherManager ,它们使管理近乎实时的搜索者非常容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.