Lucene4.6查询时完全跳过打分,提高查询效率的实现方式

Posted JetHu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene4.6查询时完全跳过打分,提高查询效率的实现方式相关的知识,希望对你有一定的参考价值。

  由于索引的文件量比较大,而且应用中不需要对文档进行打分,只需要查询出所有满足条件的文档。所以需要跳过打分来提高查询效率。一开始想用ConstantScoreQuery,但是测试发现这个类虽然让所有返回的文档打分都为1.0并没有提高查询效率,因此查资料发现可以用Filter实现跳过打分,其中又以 FieldCacheTermsFilter为最佳,其缓存机制给查询的速度提升极为明显。后面有空的时候给出完整实现,这两天略忙。

 

核心代码:

Query query = new TermQuery(new Term("word", word));
Filter filter = new FieldCacheTermsFilter("category", category);
TotalHitCountCollector collector = new TotalHitCountCollector();
searcher.search(query, filter, collector);
int count = collector.getTotalHits();

以上是关于Lucene4.6查询时完全跳过打分,提高查询效率的实现方式的主要内容,如果未能解决你的问题,请参考以下文章

怎么提高数据库查询效率

提高查询效率

提高Order by语句查询效率的两个思路

oracle分区技术提高查询效率

一般在写SQL时需要注意哪些问题,可以提高查询的效率

使用索引为什么能提高查询速度?