lucene在查询中获得匹配的术语

找出查询中哪些术语与作为lucene中的命中返回的给定文档匹配的最佳方法是什么?

我尝试了一种奇怪的方法,包括lucene contrib中的命中突出显示包,还有一个方法,可以根据最顶层的文档搜索查询中的每个单词(“docId:xy AND description:each_word_in_query”)。

没有得到满意的结果? 点击突出显示不会报告与第一个文档以外的文档匹配的一些单词。 我不确定第二种方法是否是最好的选择。

搜索器中的方法解释是查看查询的哪个部分匹配以及它如何影响总体分数的好方法。

从Lucene In Action第二版出版的例子:

public class Explainer { public static void main(String[] args) throws Exception { if (args.length != 2) { System.err.println("Usage: Explainer  "); System.exit(1); } String indexDir = args[0]; String queryExpression = args[1]; Directory directory = FSDirectory.open(new File(indexDir)); QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "contents", new SimpleAnalyzer()); Query query = parser.parse(queryExpression); System.out.println("Query: " + queryExpression); IndexSearcher searcher = new IndexSearcher(directory); TopDocs topDocs = searcher.search(query, 10); for (int i = 0; i < topDocs.totalHits; i++) { ScoreDoc match = topDocs.scoreDocs[i]; Explanation explanation = searcher.explain(query, match.doc); System.out.println("----------"); Document doc = searcher.doc(match.doc); System.out.println(doc.get("title")); System.out.println(explanation.toString()); } } } 

这将解释与查询匹配的每个文档的分数。

尚未尝试过,但请看一下org.apache.lucene.search.highlight.QueryTermExtractor的实现。