Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
solr中的多条件排序_Solr_Lucene - Fatal编程技术网

solr中的多条件排序

solr中的多条件排序,solr,lucene,Solr,Lucene,我有一种看起来像 sort=score\u dx desc,date\u dt desc 问题是,如果第一个排序有一个并列关系,那么第二个排序将应用于整个记录,而不仅仅是已排序的子集 例如: 这是我从上面的分类中得到的 score_dx date_dt 0.1 2015/10/24 0.1 2015/10/23 0.9 2015/10/20 0.9 2015/10/19 我想要的是 score_dx date_dt 0.9

我有一种看起来像

sort=score\u dx desc,date\u dt desc

问题是,如果第一个排序有一个并列关系,那么第二个排序将应用于整个记录,而不仅仅是已排序的子集

例如:

这是我从上面的分类中得到的

score_dx   date_dt 
0.1       2015/10/24

0.1       2015/10/23

0.9       2015/10/20

0.9       2015/10/19
我想要的是

score_dx   date_dt 
0.9      2015/10/20

0.9      2015/10/19

0.1      2015/10/24

0.1      2015/10/23
第一个排序结果不应更改,然后在子集内应用第二个排序结果


如何在Solr中执行此操作?

由于
score\u dx
是一个
TrieLongField
,因此该值将被转换为一个整数(long是一个范围比int大的整数,64位对32位),这意味着您索引的所有值实际上都是相同的。然后,按它们排序将给出它们之间看似随机的顺序,唯一实际应用排序的将是第二个标准

将该字段更改为一个
triedublefield
,并对内容重新编制索引,排序应按预期进行


您看到0.9的原因是,这是字段的存储值,而不是用于搜索的实际值。

您给出的示例查询应该会给出您想要的结果。查询字符串中没有多个sort=条目?分数和日期的类型是什么?0.9来自一个领域,2015/10/19来自另一个领域?(分数vs日期,其中一个字段有/介于两者之间使我不确定)。如果首先是0.9对0.9,我会怀疑IEEE 754浮点数不准确,但首先排序的0.1是可疑的。@MatsLindh
score\u dx
TrieLongField
date\u dt
TrieDateField
。是的,他们来自不同的领域。我没有得到预期的结果。如果有相同的分数值,则日期排序将接管,即使有最近日期的低分数行,也会出现在顶部