1

给定一个 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);

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

4

1 回答 1

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.
  }
于 2014-11-27T16:36:36.000 回答