从 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 进行阅读。
我正在使用 FSDirectory 查询以前构建的(也是静态的)Lucene 索引。
我想使用来自 WebApi 的查询,它是无状态的,目前为收到的每个调用实例化一个新的 FSDirectory。
我不确定这是否是将 FSDirectory 集中在一起是否更好的最佳方法。我希望框架已经涵盖了这个“问题”,但我是这个工具的新手,不知道如何进行。
打开索引并使其预热可能会产生大量开销,因为它需要构建缓存,例如 FieldCache。此外,IndexReader
class 和 IndexWriter
class 都是线程安全的。
因此,WebAPI 的典型最佳实践或该材料的任何用途是使用单个 IndexReader
或单个 IndexWriter
来为所有线程提供服务,这可以通过您的代码很容易,因为这两个 classes 都是线程安全的。
因此,通常当系统启动时,它会实例化其中之一,比方说 IndexWriter
,它将把它放在所有 WebAPI 调用都可以访问它的地方。他们可以使用 IndexWriter
进行写作,或者使用从 IndexWriter.GetReader()
获得的 reader 进行阅读。