Sorting 使用单独排序的solr boost查询
我想将inv=0(可能值从0到1000)的所有文档降级到结果集的末尾。我还有其他排序选项,比如name desc,也是查询的一部分 例如,下面是我的solr文档Sorting 使用单独排序的solr boost查询,sorting,boost,solr,solr-query-syntax,Sorting,Boost,Solr,Solr Query Syntax,我想将inv=0(可能值从0到1000)的所有文档降级到结果集的末尾。我还有其他排序选项,比如name desc,也是查询的一部分 例如,下面是我的solr文档 Doc1 : name=apple , Inv=2 Doc2 : name=ball , Inv=1 Doc3 : name=cat , Inv=0 Doc4 : name=dog , Inv=0 Doc5 : name=fish , Inv=4 Doc6 : name=Goat , Inv=5 我想实现下面的排序…在这里,我想将in
Doc1 : name=apple , Inv=2
Doc2 : name=ball , Inv=1
Doc3 : name=cat , Inv=0
Doc4 : name=dog , Inv=0
Doc5 : name=fish , Inv=4
Doc6 : name=Goat , Inv=5
我想实现下面的排序…在这里,我想将inv=0的所有文档向下推到底部,然后应用“名称asc”排序
我的solr请求是
bq:(:和-inv:“0”)^999.0“&定义类型:“eDiscoveryMax”
这里是我给降级结果的排名
这个提升查询工作得很好。它将inv=0的所有文档下移到底部
但是当我将&sort=name asc添加到solr查询中时,它将“sort”优先于bq。我看到下面的结果是“name asc”
谁能帮帮我吗 Solr中的默认排序标准是
score desc
,其中score
是一个虚拟字段,它实际上表示文档的分数。
一旦传递了
&sort=name asc
,它将覆盖默认排序
这里可能的解决方案如下:&sort=score desc,name asc
。字面意思是:请先按分数排序
,对于分数相等的文档,请按名称
升序排序
只要你在doc1、doc2、doc5、doc6上的分数相等,它就应该有效
如果不是这样的话,那么请查看此文档以了解有关如何惩罚具有
inv:0
的文档的更多详细信息。Solr中的默认排序标准是score desc
,其中score
是一个虚拟字段,它实际上表示文档的分数。
一旦传递了
&sort=name asc
,它将覆盖默认排序
这里可能的解决方案如下:&sort=score desc,name asc
。字面意思是:请先按分数排序
,对于分数相等的文档,请按名称
升序排序
只要你在doc1、doc2、doc5、doc6上的分数相等,它就应该有效
如果不是这样的话,那么请查看此文档以了解更多详细信息,了解如何使用
inv:0
排序将覆盖提升
因此,您可以通过将条件映射到boost值来将排序移动到boost中
或者使用query()语法将boost条件移动到sort中。这是(单击“开始演示”)中的一个精华:
排序将覆盖提升 因此,您可以通过将条件映射到boost值来将排序移动到boost中 或者使用query()语法将boost条件移动到sort中。这是(单击“开始演示”)中的一个精华:
是否有方法以Demax格式实现此查询?是否有方法以Demax格式实现此查询?
Doc1
Doc2
Doc5
Doc6
Doc3
Doc4
Doc1 : name=apple , Inv=2
Doc2 : name=ball , Inv=1
Doc3 : name=cat , Inv=0
Doc4 : name=dog , Inv=0
Doc5 : name=fish , Inv=4
Doc6 : name=Goat , Inv=5
qq = Harry
q = +{!edismax v=$qq}
qf = title actor writer director keywords
sort = query($title_sort,0) desc, title asc
title_sort = {!field f=title v=$qq}