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

Sorting on multivalued field in Solr

我知道 Solr 不支持多值字段排序。但是有什么方法可以在 Solr 中对多值字段进行排序。我有两个字段为 custom_code 的文档,值如下,

文档 1:11、78、45、22

文档 2:56、74、62、10

当我按升序排序时,顺序应该是,

文档 2:56、74、62、10

文档 1:11、78、45、22

此处 Doc 2 将排在第一位,因为它具有最小的元素 10(大于 doc 1 的 11)。

我们如何在 Solr 中实现这一点。什么是最简单的方法?

如果 this issue 已实施,您可以直接使用它,如票证描述中所述。但目前还没有。

因此,您可以做的另一件事是索引一个非多值的附加字段 min_code,并将 custom_code 的最小值放在那里。您可以在客户端或 Solr 中的 UpdateRequestProcessor 中执行此操作。 然后你只需按 min_code

排序

创建一个复制域,将多值数据的内容复制到已排序的不带逗号的串联单值中,并将其用于排序。

例如:

文档 1:

多值数据:11、78、45、22

sortedConcatenatedSingleValue : 11224578

文档 2:

多值数据:56、74、62、10

sortedConcatenatedSingleValue : 10566274

如果在从源生成数据时无法创建此单值字段,则可以在索引期间使用脚本转换器 (https://wiki.apache.org/solr/DataImportHandler#ScriptTransformer) 使用 [=29= 创建此 sortedConcatenatedSingleValue 字段] 函数。

您可以在 5.3 中开箱即用 - https://issues.apache.org/jira/browse/SOLR-2522

这里有一个很好的描述 - https://lucidworks.com/blog/2015/09/10/minmax-on-multivalued-field/