我知道Solr不支持多值字段排序。但是有什么方法可以对Solr中的多值字段进行排序。我有场custom_code两个文件和值如下,Solr中的多值字段排序
文件1:11,78,45,22
文档2:56,74,62,10
当我在排序它升序的顺序应该是,
文档2:56,74,62,10
文件1:11,78,45,22
这里文档2会首先,因为它具有最小的元素10(其大于doc 1的11)。
我们如何在Solr中实现这一点。什么是最简单的方法?
我知道Solr不支持多值字段排序。但是有什么方法可以对Solr中的多值字段进行排序。我有场custom_code两个文件和值如下,Solr中的多值字段排序
文件1:11,78,45,22
文档2:56,74,62,10
当我在排序它升序的顺序应该是,
文档2:56,74,62,10
文件1:11,78,45,22
这里文档2会首先,因为它具有最小的元素10(其大于doc 1的11)。
我们如何在Solr中实现这一点。什么是最简单的方法?
创建一个复制字段,将多值数据的内容复制到无逗号的已排序连接单个值中,并将其用于排序。
对于防爆:
文件1:
multiValuedData:11,78,45,22
sortedConcatenatedSingleValue:11224578
文档2:
multiValuedData:56,74 ,62,10
sortedConcaten atedSingleValue:10566274
如果不能在生成从源中的数据则可以使用脚本变压器(https://wiki.apache.org/solr/DataImportHandler#ScriptTransformer)在索引时间来创建使用JavaScript函数此sortedConcatenatedSingleValue场的时间创建此singlvalue字段。
如果this issue已实施,您可以使用该功能,如票证的说明中所述。但现在还没有。
所以,你可以做的另一件事是索引一个额外的字段min_code
,非多值,并把最小值custom_code
在那里。您可以在客户端或UpdateRequestProcessor中的Solr中执行此操作。 然后您只需排序min_code
我需要决定最小值在两个文档中相同的方法,那么在这种情况下,我需要比较下一个更高的值。 我打算将所有值作为单独排序的字符串格式存储在单独的字段中,同时排序时我将使用此排序的字符串字段进行排序。 – NutchUser
你可以在箱子外面在5.3 - https://issues.apache.org/jira/browse/SOLR-2522
一个很好的说明在这里 - https://lucidworks.com/blog/2015/09/10/minmax-on-multivalued-field/
有没有办法进行排序Solr中多值的字段。请参阅http://stackoverflow.com/questions/20806935/in-solr-can-i-sort-on-the-matching-value-from-a-multi-valued-field http://stackoverflow.com/questions/8492251/is-there-any-workaround-sort-on-multivalued-field –