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
。是的,他们来自不同的领域。我没有得到预期的结果。如果有相同的分数值,则日期排序将接管,即使有最近日期的低分数行,也会出现在顶部