jcv*_*dan 5 c# java lucene indexing
它在Lucene文档中指出,在应用程序中使用IndexWriter和IndexSearcher的一个实例是最快的.
目前我有一个静态的IndexWriteropen 实例,并且它的静态实例IndexSearcher始终保持打开状态,但是如果IndexWriter对索引执行任何CRUD操作则重建.我已经实施了关闭两个在我的索引管理类Dispose方法IndexWriter,并IndexSearcher在应用程序结束(但它是一个Web应用程序,所以这是有可能不被调用运行的几个月).
这听起来像是合理的做事方式吗?并且使用静态实例也存在多线程问题..?即我在使用时应该锁定我的作家和搜索者吗?
Lucene索引编写者,读者和搜索者是线程安全的(例如,参见IndexWriter文档的第二个注释或者IndexSearcher 文档的第一个注释),因此在多个线程中重用相同的实例是没有问题的.
根据您如何管理索引编写者和搜索者的描述,我认为您正在重新实现两个Lucene实用程序类,您可能会发现它们很有帮助:NRTManager和SearcherManager使得管理近实时搜索者变得非常容易.