繁体   English   中英

在应用程序的整个生命周期中保持Lucene IndexWriter和IndexSearcher处于打开状态是一种好习惯吗

[英]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方法,该方法在应用程序结束时关闭IndexWriterIndexSearcher (但是它是一个Web应用程序,因此可能需要运行数月才能被调用)。

这听起来像做事的合理方式吗? 并且使用静态实例还会带来多线程问题吗? 即我应该在使用时锁定我的作家和搜索者吗?

Lucene索引编写器,阅读器和搜索器是线程安全的(例如,请参阅IndexWriter文档第二个注释IndexSearcher文档1 个注释 ),因此在多个线程中重用同一实例没有问题。

根据有关如何管理索引作者和搜索者的描述,我认为您正在重新实现对Lucene有用的两个实用程序类: NRTManagerSearcherManager ,它们使管理近乎实时的搜索者非常容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM