这两个代码有什么区别?基于性能导向和面向文档的
直接在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);
答案 0 :(得分:6)
IndexSearcher是一个围绕IndexReader的轻量级包装器。即使您使用IndexSearcher构造函数an IndexReader will be open under the hoods,也可以从两个片段中获得相同的性能。
尽管方便,但通过目录直接打开IndexSearcher是一种不好的做法。此外,自Lucene 3.5以来,这个构造函数已被弃用。