我有一个Solr查询,其中我试图根据某个字段对结果进行排序。
我想以这样一种方式修改它,即只对特定的一组文档进行排序,而将其余的文档简单地附加到排序列表的末尾。
有没有办法做到这一点?
请帮帮忙。
致以问候。
发布于 2013-07-17 12:11:41
如果你想按特定的动态字段条件排序,你可以提高匹配条件的字段,并按分数排序。
例如,bq=some_field:some_value^10
这将提高仅符合条件的文档的分数。
此外,对于所有其他文档,分数将保持不变,并按原样遵循吹嘘的文档。
编辑 :-
您可以在多个字段上提升,例如,bq=string_array_field:some_value^10&bq=ranking^10将提升与值匹配的文档,并将具有较高排名的文档提升到顶部。
其余的文档将紧随其后。
发布于 2013-07-17 10:22:37
对于schema.xml中的每个<fieldType>定义,您可以设置一个sortMissingLast="true"选项,该选项将为您提供所需的排序行为。对于您的特定示例,我建议创建一个设置了sortMissingLast="true"的新字段,然后根据给定的条件填充这个附加字段,而不是为排序时希望显示在末尾的那些文档设置值。
https://stackoverflow.com/questions/17687771
复制相似问题