C# 保留Lucene IndexWriter&;是一种良好的做法吗;IndexSearcher在应用程序的生命周期内打开

C# 保留Lucene IndexWriter&;是一种良好的做法吗;IndexSearcher在应用程序的生命周期内打开,c#,java,lucene,indexing,C#,Java,Lucene,Indexing,它在Lucene文档中指出,在应用程序中使用IndexWriter和IndexSearcher的一个实例是最快的 目前,我有一个IndexWriter的静态实例一直处于打开状态,还有一个IndexSearcher的静态实例一直处于打开状态,但在IndexWriter对索引执行任何CRUD操作时会重新生成。我已经在我的索引管理类上实现了一个Dispose方法,当应用程序结束时,它会关闭IndexWriter和IndexSearcher(但是它是一个web应用程序,因此可能要运行数月而不被调用) 这

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

目前,我有一个
IndexWriter
的静态实例一直处于打开状态,还有一个
IndexSearcher
的静态实例一直处于打开状态,但在
IndexWriter
对索引执行任何CRUD操作时会重新生成。我已经在我的索引管理类上实现了一个Dispose方法,当应用程序结束时,它会关闭
IndexWriter
IndexSearcher
(但是它是一个web应用程序,因此可能要运行数月而不被调用)


这样做听起来合理吗?使用静态实例也会带来多线程问题吗。。?也就是说,我应该在使用时锁定我的编写器和搜索器吗?

Lucene索引编写器、读取器和搜索器是线程安全的(请参见示例或),因此跨多个线程重用相同的实例没有问题


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

好的,谢谢您提供的信息,它们是线程安全的,这太好了。我将研究您提到的类。java和c实现之间有什么区别吗?还是相同?