Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 使用单独排序的solr boost查询_Sorting_Boost_Solr_Solr Query Syntax - Fatal编程技术网

Sorting 使用单独排序的solr boost查询

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

我想将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
我想实现下面的排序…在这里,我想将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}