这与以下内容不同:
How to sort the top 100 results of solr query based on a specific filed?
假设我的搜索条件title:Building the Nation
返回10万个结果。我猜Solr已经根据最佳匹配返回了数据,即最佳匹配数据将排在最前面。我正在根据某事进行排序。在这种情况下,最后位置的记录可能位于顶部。
https://host/solr/booksCore/select?q=(title:"Building the Nation" OR title:Building the Nation OR author:"Building the Nation" OR author:Building the Nation) AND subjects:*&rows=100&sort=sales_a desc&wt=json
因此,我想首先进行搜索,然后获取第100条记录,然后进行排序。如何使用Solr select API做到这一点?
答案 0 :(得分:2)
首先-您正在编写的查询没有执行您可能希望它们执行的操作。 author:Building the Nation
在Building
字段中搜索author
,在默认搜索字段中搜索the
和Nation
。在这种情况下,您可能想要author:the
author:Nation
,或将qf
与edismax
查询解析器结合使用(并使用ps
和pf
来增强短语)。
第二,如果subjects:*
旨在匹配具有主题的任何文档,则该语法为subjects:[* TO *]
。
然后,在第三个re-rank the top N results in a query中,可以使用rq
-重新排序查询。该查询的结果将是一组新的得分,您可以使用reRankWeight
参数来提高得分:
在下面的示例中,将使用查询“(hi hello hey hiya)”对与查询“ greetings”匹配的前1000个文档进行重新排名。这1000个文档中每个文档的最终得分将是其从“(hi hello hey hiya)”获得的得分的3倍,再加上原始“ greetings”查询获得的得分:
q=greetings&rq={!rerank reRankQuery=$rqq reRankDocs=1000 reRankWeight=3}&rqq=(hi+hello+hey+hiya)
您可以使用_val_
直接将数字值分配为文档的分数,从而有效地按该值反向排序。