我知道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 –