在Solr中对多值字段进行排序

时间:2015-05-12 06:46:12

标签: solr lucene solr-multy-valued-fields

我知道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中实现这一目标。什么是最简单的方法?

3 个答案:

答案 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)