3

これら2つのコードの違いは何ですか? パフォーマンス指向とドキュメント指向に基づく

ディレクトリを直接使用する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);
4

1 に答える 1

7

IndexSearcher は、IndexReader の軽量ラッパーです。IndexSearcher コンストラクターを使用する場合でも、IndexReader がフードの下で開かれるため、2 つのスニペットから同じパフォーマンスを期待できます。

便利な場合もありますが、Directory を介して IndexSearcher を直接開くことはお勧めできません。また、このコンストラクターは Lucene 3.5 以降では非推奨です。

于 2012-05-10T12:36:31.943 に答える