我有一种看起来像
的那种 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中执行此操作?
答案 0 :(得分:1)
由于score_dx
是TrieLongField
,因此该值将被转换为整数(long是一个整数,其范围比int更宽,64位对32位),这意味着所有实际上,您索引的值是相同的。按它们排序然后会给出一个在它们之间看似随机的顺序,并且实际应用排序的唯一事情将是第二个标准。
将字段更改为TrieDoubleField
并重新索引您的内容,排序应该按预期工作。
你看到0.9的原因是这是该字段的存储的值,而不是用于搜索的实际值。