我知道 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 中实现这一点。最简单的方法是什么?
我知道 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 中实现这一点。最简单的方法是什么?
创建一个copyfield,将多值数据的内容复制到一个不带逗号的已排序的串联单值中,并用于排序。
例如:
文件 1:
多值数据:11、78、45、22
排序连接单值:11224578
文件 2:
多值数据:56、74、62、10
排序连接单值:10566274
如果在从源生成数据时无法创建此单值字段,则可以在索引期间使用脚本转换器 ( https://wiki.apache.org/solr/DataImportHandler#ScriptTransformer ) 创建此 sortedConcatenatedSingleValue 字段一个javascript函数。
如果此问题已实施,您可以使用它,如票证说明中所述。但目前还没有。
因此,您可以做的另一件事是索引一个附加字段min_code
,非多值并将最小值custom_code
放在那里。您可以在客户端或 Solr 中的 UpdateRequestProcessor 中执行此操作。然后你就排序min_code
您可以在 5.3 中开箱即用 - https://issues.apache.org/jira/browse/SOLR-2522
一个很好的描述在这里 - https://lucidworks.com/blog/2015/09/10/minmax-on-multivalued-field/