通过lucene中的IndexReader或IndexSearcher打开目录

时间:2012-05-10 09:35:30

标签: performance lucene

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

直接在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);

1 个答案:

答案 0 :(得分:6)

IndexSearcher是一个围绕IndexReader的轻量级包装器。即使您使用IndexSearcher构造函数an IndexReader will be open under the hoods,也可以从两个片段中获得相同的性能。

尽管方便​​,但通过目录直接打开IndexSearcher是一种不好的做法。此外,自Lucene 3.5以来,这个构造函数已被弃用。