我正在用SolrJ搜索Solr索引,並試圖獲取Lucene的解釋以便將其記錄下來以供進一步使用。如何使用Solrj獲取SolrDocument的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()的價值得到(ID),但它似乎explainmap。僅包含具有最後找到的文檔的值的關鍵null。
任何想法如何得到正確的解釋?
正如我自己的答案中提到的ID是錯的(閱讀:不存在)。但是,如果在我自己找出問題之前,我已經閱讀了您的答案,我會從調試查詢控制檯中看到它,因爲我相信解釋輸出在您的文章中沒有名稱/ id屬性。所以通過張貼您解決我的問題的方式:) – Timo 2010-09-29 10:17:15