我知道Solr不支持多值字段排序。但是我们有什么方法可以在Solr中对多值字段进行排序。我有两个带有字段custom_code的文档,值如下,
Doc 1:11,78,45,22
Doc 2:56,74,62,10
当我按升序对其进行排序时,顺序应为
Doc 2:56,74,62,10
Doc 1:11,78,45,22
这里Doc 2将首先出现,因为它具有最小的元素10(大于doc 1的11)。
我们如何在Solr中实现这一目标。什么是最简单的方法?
答案 0 :(得分:1)
如果this issue已实施,您可以使用它,如故障单的说明中所示。但现在还没有。
因此,您可以做的另一件事是索引其他字段min_code
,非多值并将custom_code
的最小值放在那里。您可以在客户端或在UpdateRequestProcessor中的Solr中执行此操作。
然后你只需按min_code
答案 1 :(得分:1)
创建一个copyfield,将多值数据的内容复制到一个没有逗号的已排序的连续单个值中,并将其用于排序。
对于Ex:
Doc 1:
multiValuedData:11,78,45,22
sortedConcatenatedSingleValue:11224578
Doc 2:
multiValuedData:56,74,62,10
sortedConcatenatedSingleValue:10566274
如果在从源生成数据时无法创建此singlvalue字段,则可以在索引时使用脚本转换器(https://wiki.apache.org/solr/DataImportHandler#ScriptTransformer)来使用javascript函数创建此sortedConcatenatedSingleValue字段。
答案 2 :(得分:1)
你可以在5.3 - https://issues.apache.org/jira/browse/SOLR-2522
中开箱即用这里有一个很好的描述 - https://lucidworks.com/blog/2015/09/10/minmax-on-multivalued-field/