solr中的多个条件排序

时间:2016-10-14 19:31:40

标签: solr lucene

我有一种看起来像

的那种

sort=score_dx desc, date_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中执行此操作?

1 个答案:

答案 0 :(得分:1)

由于score_dxTrieLongField,因此该值将被转换为整数(long是一个整数,其范围比int更宽,64位对32位),这意味着所有实际上,您索引的值是相同的。按它们排序然后会给出一个在它们之间看似随机的顺序,并且实际应用排序的唯一事情将是第二个标准。

将字段更改为TrieDoubleField并重新索引您的内容,排序应该按预期工作。

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