用于过滤查询的Java Lucene IndexSearcher.explain

时间:2013-11-11 19:52:17

标签: java lucene lucene-filters

鉴于Lucene Query query我可以通过这样的方式得到结果和得分的解释:

TopDocs results = searcher.search(query, 10);
ScoreDoc[] hits = results.scoreDocs;
searcher.explain(query, hits[idx].doc); 

太棒了!

是否有过滤查询的等价物?

如果我像这样插入org.apache.lucene.search.Filter filter

TopDocs results = searcher.search(query, filter, 10);

如何解释上述查询的结果?

1 个答案:

答案 0 :(得分:0)

想想你想要实现的目标。当您要求解释特定文档时,您将使用搜索查询和文档ID进行操作。过滤器与解释无关,因为它只会通过消除与提供的过滤器不匹配的文档来缩小总点击次数,而不是通过更改实际查询。总而言之,过滤器对于对其执行的查询的特定文档的实际解释没有影响。见下文:

TopDocs results = searcher.search(query, filter, 10); // Apply filter here.
ScoreDoc[] hits = results.scoreDocs;
for(ScoreDoc hit : hits)
  {
  searcher.explain(query, hit.doc); // Filter won't affect this either way.
  }