Solr按组合查询中的分数排序

时间:2012-11-12 08:37:17

标签: java solr lucene

我使用3个参数运行Solr查询,并且我希望结果按照与参数之一的相关性进行排序(而不是通过与参数组合的相关性)。

示例:

SolrQuery solrQuery = new SolrQuery();
solrQuery.add("title", "some title");
solrQuery.add("date", "some date");
solrQuery.add("description", "some description");

solrQuery.addSortField("score", SolrQuery.ORDER.desc);

查询结果将按照与标题+日期+描述的组合的相关性进行排序,但我只需按标题进行评分。

我怎么能这样做?

P.S。我使用Solr 4.0 BETA

2 个答案:

答案 0 :(得分:2)

分数中可能没有选择性排序选项 但是,您可以将匹配标题的结果提升到非常高的值,以便字段日期和描述中的分数不会产生任何影响。
因此,当您按分数排序时,您将按标题排序结果。

答案 1 :(得分:2)

由于您只是按一个字段对相关性进行评分,因此您可以将搜索范围限制在“qf'”查询字段中的那一个字段。

编辑或添加到solrconfig.xml中的现有requestHandler

<requestHandler name="/relevant_by_one_field" class="solr.SearchHandler">
   <lst name="defaults">
      <str name="defType">edismax</str>
      <str name="qf">title</str>
   </lst>
</requestHandler>

您还可以在&#39; qf&#39;中指定具体的提升功能。参数,但在单个查询字段的情况下,提升不会做任何事情,因为提升只与其他字段的上下文相关。

这是一个搜索多个字段,然后在&#39; title&#39;中找到结果的示例。最高的。

<requestHandler name="/relevant_by_multiple_field" class="solr.SearchHandler">
   <lst name="defaults">
      <str name="defType">edismax</str>
      <str name="qf">title^2 description^0.7 date^0.5</str>
   </lst>
</requestHandler>