我正在使用 SolrJ 搜索 Solr 索引,并尝试获取 Lucene 解释以记录它以供进一步使用。
代码如下:
SolrServer server = new CommonsHttpSolrServer("solr_url");
SolrQuery solrquery = new SolrQuery();
solrquery.set("fl", "score, id"); // id is a String field
solrquery.set("rows", "1000");
solrquery.set("debugQuery", "on");
solrquery.setQuery("query words here");
try {
QueryResponse response = server.query(solrquery);
SolrDocumentList docs = response.getResults();
Iterator<SolrDocument> dociterator = docs.iterator();
while (dociterator.hasNext())
{
SolrDocument doc = dociterator.next();
String id = (String) doc.getFirstValue(idfield);
Float relevance = (Float) doc.getFirstValue("score");
String explanation = ???;
}
} catch (SolrServerException e) {
e.printStackTrace();
}
我认为 response.getEplainMap() 将包含一个映射,其值类似于 response.getEplainMap().get(id) ,但似乎解释映射仅包含具有最后找到的文档值的键 null 。
任何想法如何获得正确的解释?