0

我使用 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);

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

我怎么能做到?

PS 我使用 Solr 4.0 BETA

4

2 回答 2

3

由于您仅按一个字段对相关性进行评分,因此您可以将搜索限制在“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>

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

这是一个搜索多个字段的示例,然后对在“标题”中找到的结果进行评分最高。

<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>
于 2012-11-13T03:28:33.523 回答
2

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

于 2012-11-12T10:51:08.690 回答