根据前100条记录排序

时间:2018-08-21 13:06:05

标签: solr solrj solrcloud solr4 solr-query-syntax

这与以下内容不同:

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做到这一点?

1 个答案:

答案 0 :(得分:2)

首先-您正在编写的查询没有执行您可能希望它们执行的操作。 author:Building the NationBuilding字段中搜索author,在默认搜索字段中搜索theNation。在这种情况下,您可能想要author:the author:Nation,或将qfedismax查询解析器结合使用(并使用pspf来增强短语)。

第二,如果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_直接将数字值分配为文档的分数,从而有效地按该值反向排序。