从 WebApi 读取 Lucene FSDirectory

Read Lucene FSDirectory from WebApi

我正在使用 FSDirectory 查询以前构建的(也是静态的)Lucene 索引。

我想使用来自 WebApi 的查询,它是无状态的,目前为收到的每个调用实例化一个新的 FSDirectory。

我不确定这是否是将 FSDirectory 集中在一起是否更好的最佳方法。我希望框架已经涵盖了这个“问题”,但我是这个工具的新手,不知道如何进行。

打开索引并使其预热可能会产生大量开销,因为它需要构建缓存,例如 FieldCache。此外,IndexReader class 和 IndexWriter class 都是线程安全的。

因此,WebAPI 的典型最佳实践或该材料的任何用途是使用单个 IndexReader 或单个 IndexWriter 来为所有线程提供服务,这可以通过您的代码很容易,因为这两个 classes 都是线程安全的。

因此,通常当系统启动时,它会实例化其中之一,比方说 IndexWriter,它将把它放在所有 WebAPI 调用都可以访问它的地方。他们可以使用 IndexWriter 进行写作,或者使用从 IndexWriter.GetReader() 获得的 reader 进行阅读。