【问题标题】:opening directory through IndexReader or IndexSearcher?in lucene在 lucene 中通过 IndexReader 或 IndexSearcher 打开目录
【发布时间】:2012-05-10 09:35:30
【问题描述】:

这两个代码有什么区别?基于性能导向和文档导向

直接使用IndexSearcher中的目录

Analyzer anal = new StandardAnalyzer(Version.LUCENE_30);
QueryParser parser = new QueryParser(Version.LUCENE_30, "", anal);
Query query = parser.parse(queryStr);
Searcher searcher = new IndexSearcher(NIOFSDirectory.open(new File(indexDir)));

使用IndexReader 中的目录,然后使用该阅读器打开搜索器

Analyzer anal = new StandardAnalyzer(Version.LUCENE_30);
QueryParser parser = new QueryParser(Version.LUCENE_30, "", anal);
Query query = parser.parse(queryStr);
IndexReader ir = IndexReader.open(NIOFSDirectory.open(new File(indexDir)), false);
IndexSearcher searcherNew = new IndexSearcher(ir);

【问题讨论】:

    标签: performance lucene


    【解决方案1】:

    IndexSearcher 是 IndexReader 的轻量级包装器。即使您使用 IndexSearcher 构造函数an IndexReader will be open under the hoods,您也可以期望两个 sn-ps 具有相同的性能。

    虽然很方便,但直接在目录上打开 IndexSearcher 是一种不好的做法。此外,自 Lucene 3.5 起,此构造函数已被弃用。

    【讨论】:

    • 详细说明一下,打开 IndexReader 是一项代价高昂的操作。将 IndexReader 包装在新的 IndexSearcher 中很便宜。因此,为了优化,您需要仔细管理 IndexReader 的重用,但不一定是 IndexSearchers。
    猜你喜欢
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多