Solr:从查询响应中获取排序规则

时间:2011-09-22 12:04:00

标签: solr spell-checking collation

我正在尝试配置SOLR拼写检查。我的请求和响应似乎工作正常。唯一的问题是如何从响应中获取Collat​​ions。

这是我的回复中包含排序规则的部分。 我使用API​​中的哪些方法来提取3个排序规则。

 <str name="collation">ipod tough</str>
 <str name="collation">ipad tough</str>
 <str name="collation">wood tough</str>
 <str name="collation">food tough</str>

这是我目前正在使用的方法:

List<String> suggestedTermsList = new ArrayList<String>();
if(aQueryResponse == null) {
  return suggestedTermsList;
}

try {
  SpellCheckResponse spellCheckResponse = aQueryResponse.getSpellCheckResponse();
  if(spellCheckResponse == null) {
    throw new Exception("No SpellCheckResponse in QueryResponse");
  }  

 List<Collation> collationList = spellCheckResponse.getCollatedResults();

  for(Collation c : collationList){
    suggestedTermsList.add(c.getCollationQueryString());
  }

}catch(Exception e) {
  Trace.Log("SolrSpellCheck",Trace.HIGH, "Exception: " + e.getMessage());
}
return suggestedTermsList;

我的回复标题是这样的:

spellcheck = {suggestions = {ipood = {numFound = 5,startOffset = 0,endOffset = 5,suggestion = [ipod,ipad,wood,food,pod]},collat​​ion = ipod tough,collat​​ion = ipad tough,collat​​ion =木质坚韧,整理=食物坚韧}}}

我得到4个排序规则,我想添加到List suggestTermsList,然后我返回到调用代码。现在我的ArrayList有4个排序规则,但它只重复最后一次排序4次。即食物坚韧 - 四次。

1 个答案:

答案 0 :(得分:0)

我想你想调用QueryResponse.getSpellCheckResponse()并从那里开始。以下是您可能会发现有用的文档的一些链接:

http://lucene.apache.org/solr/api/org/apache/solr/client/solrj/response/SpellCheckResponse.Collation.html

http://lucene.apache.org/solr/api/index.html?org/apache/solr/client/solrj/response/SpellCheckResponse.html