【问题标题】:Read Lucene FSDirectory from WebApi从 WebApi 读取 Lucene FSDirectory
【发布时间】:2021-12-27 10:45:54
【问题描述】:

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

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

我不确定这是否是最好的方法,是否更好地汇集 FSDirectory。我希望框架已经涵盖了这个“问题”,但我是这个工具的新手,不知道如何继续。

【问题讨论】:

    标签: c# rest lucene lucene.net


    【解决方案1】:

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

    因此,WebAPI 的典型最佳实践,或该母题的任何用途,是使用单个 IndexReader 或单个 IndexWriter 来服务所有线程,这可以通过您的代码轻松完成,因为两者这些类是线程安全的。

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

    【讨论】:

    • 我最近读到新版本4.8也支持SearcherManager来简化这个过程。我会尝试这种方式。无论如何,非常感谢您的帮助。
    • 确实,使用SearcherManager 是个好主意,您将为此传入IndexWritersearcherManager.Acquire()searcherManager.Release(indexSearcher);方法使管理IndexReader 的生命周期变得更容易,因为您将使用SearacherManager 提供的IndexSearcher,而SearcherManager 将管理IndexReader
    猜你喜欢
    • 2016-06-25
    • 2014-10-07
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 2018-04-27
    • 2014-08-27
    相关资源
    最近更新 更多