我使用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
答案 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>