想象一下,有一个带有多个排序子句的Solr请求(显然不是得分)。有没有办法弄清楚,对于每个找到的文件,哪些条款导致与邻居的关系,哪些实际上用于排序?我对一个条款特别感兴趣,并希望找到因此而重新排序的所有文件。
例如,我找到sort=A desc, B asc, C asc
,找到了三个文档,我需要根据B asc
找出重新排序的文档:
Doc 1: perhaps we skip it
Doc 2: "B asc" meaning it has same A value with Doc 1 and B was used as tie breaker.
Doc 3: "A desc" meaning it has different A value from Doc 2 and therefore B was never used for sorting.
显然,有很多方法可以解决这个问题。
答案 0 :(得分:1)
我能想到的最近的事情是query re-ranking。因此,您可以使用 val 关键字将特殊排序转换为将预期查询转换为从字段值派生的分数。但这只适用于数字或函数。
此外,sort参数仍会覆盖,因为重新排名会影响原始分数。因此,您必须将所有内容都移到评分函数中。如果按文本字段排序,则可能会出现问题。
所以,这可能不值得做in-Solr。如果你可以用双重查询来做,它可能是最简单的前进道路。