我正在使用FSDirectory来查询以前构建的(也是静态的)Lucene索引。我想使用WebApi中的查询,它是无状态的,目前为接收到的每个调用示例化一个新的FSDirectory。我不确定这是否是最好的方法,也不知道是否更好地池化FSDirectory。我希望框架已经涵盖了这个“问题”,但我是这个工具的新手,不知道如何继续。
9rygscc11#
打开索引并使其预热可能会有很多开销,因为它需要构建缓存,例如FieldCache。此外,IndexReader类和IndexWriter类都是线程安全的。因此,WebAPI的典型最佳实践或任何使用该材料的最佳实践是使用单个IndexReader或单个IndexWriter来服务所有线程,这可以通过您的代码轻松完成,因为这两个类都是线程安全的。因此,通常当系统启动时,它会示例化其中一个,比如说IndexWriter,并将其放置在所有WebAPI调用都可以访问它的位置。它们可以使用IndexWriter进行写入,或使用从IndexWriter.GetReader()获得的读取器进行阅读。
IndexReader
IndexWriter
IndexWriter.GetReader()
1条答案
按热度按时间9rygscc11#
打开索引并使其预热可能会有很多开销,因为它需要构建缓存,例如FieldCache。此外,
IndexReader
类和IndexWriter
类都是线程安全的。因此,WebAPI的典型最佳实践或任何使用该材料的最佳实践是使用单个
IndexReader
或单个IndexWriter
来服务所有线程,这可以通过您的代码轻松完成,因为这两个类都是线程安全的。因此,通常当系统启动时,它会示例化其中一个,比如说
IndexWriter
,并将其放置在所有WebAPI调用都可以访问它的位置。它们可以使用IndexWriter
进行写入,或使用从IndexWriter.GetReader()
获得的读取器进行阅读。