Tim*_*imo 5 java lucene solr solrj
我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)
我认为response.getEplainMap()将包含一个值为response.getEplainMap().get(id)的映射,但似乎explainmap只包含带有最后找到的文档值的键null.
任何想法如何得到正确的解释?
就我而言,Solr索引本身存在一个错误.以下代码现在有效.
Map<String, String> explainmap = response.getExplainMap();
String explanation = explainmap.get(id);
Run Code Online (Sandbox Code Playgroud)
创建索引并遇到上述问题时,请确保schema.xml(例如<uniqueKey>id</uniqueKey>)中确定的id字段包含正确的数据.在我的例子中,我在代码中使用的id字段与Solr认为的不同,并且它不包含任何数据,因此explainmap只有一个字段,其中键为null.
| 归档时间: |
|
| 查看次数: |
4095 次 |
| 最近记录: |