2

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

4

3 回答 3

2

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

例如:

文件 1:

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

排序连接单值:11224578

文件 2:

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

排序连接单值:10566274

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

于 2015-05-13T17:16:04.733 回答
1

如果此问题已实施,您可以使用它,如票证说明中所述。但目前还没有。

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

于 2015-05-12T13:26:07.647 回答
1

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

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

于 2015-11-20T19:02:11.843 回答