2015-05-12 123 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