2015-05-12 86 views
1

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

+0

有没有办法进行排序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 –

回答

1

创建一个复制字段,将多值数据的内容复制到无逗号的已排序连接单个值中,并将其用于排序。

对于防爆:

文件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字段。

1

如果this issue已实施,您可以使用该功能,如票证的说明中所述。但现在还没有。

所以,你可以做的另一件事是索引一个额外的字段min_code,非多值,并把最小值custom_code在那里。您可以在客户端或UpdateRequestProcessor中的Solr中执行此操作。 然后您只需排序min_code

+0

我需要决定最小值在两个文档中相同的方法,那么在这种情况下,我需要比较下一个更高的值。 我打算将所有值作为单独排序的字符串格式存储在单独的字段中,同时排序时我将使用此排序的字符串字段进行排序。 – NutchUser