2 回答

TA貢獻2041條經(jīng)驗 獲得超4個贊
除非title
實際上是 multiValued - 你的帖子可以有多個標題 - 你應該在你的架構中定義它multiValued="false"
。但是,還有第二個問題——默認類型的字段text_general
不適合排序,因為它會生成多個標記,一個標記對應標題中的每個單詞。這對于搜索很有用,但在排序時會給出奇怪且不直觀的結果。
因此,改為定義一個title_sort
字段并使用帶有 和 的字段類型KeywordTokenizer
(如果您想要不區(qū)分大小寫的排序),或者如果您想要區(qū)分大小寫的排序,請為該字段使用已經(jīng)定義的字段類型。LowerCaseFilter
string
title_sort

TA貢獻1828條經(jīng)驗 獲得超3個贊
首先要檢查的是您是否真的需要該標題字段是多值的,或者您的文檔是否真的有多個標題?如果沒有,您只需要通過設置來修復字段定義multivalued="false"。
也就是說,除非確定應該使用這些多個值中的哪一個進行排序,或者如何將它們組合成一個,否則對多值字段進行排序是沒有意義的。
假設我們需要按標題(按字母順序)對給定的結果集進行排序,首先使用單值標題字段:
# Unsorted
"docs": [
{ "id": "1", "title": "One" },
{ "id": "2", "title": "Two" },
{ "id": "3", "title": "Three" },
]
# Sorted
"docs": [
{ "id": "1", "title": "One" },
{ "id": "3", "title": "Three" },
{ "id": "2", "title": "Two" },
]
# -> ok no problem here
現(xiàn)在不可能像現(xiàn)在這樣對多值字段應用相同的邏輯,您必須確定在每個文檔中使用哪個標題才能正確排序它們:
# Unorted
"docs": [
{ "id": "1", "title": ["One", "z-One", "a-One"] },
{ "id": "2", "title": ["Two", "z-Two", "a-Two"] },
{ "id": "3", "title": ["Three", "z-Three", "a-Three"] }
]
希望 Solr 允許通過函數(shù)的輸出對結果進行排序,這意味著您可以使用 Solr 的任何函數(shù)查詢來“獲取”每個標題字段的單個值。你提到的答案是一個很好的例子,即使它可能不適合你(因為標題需要啟用 docValues - 取決于字段定義 - 并且知道最大/最小函數(shù)應該只與數(shù)值一起使用),只是為了得到主意 :
# here the 2nd argument is a callback to max(), used precisely to get a single value from title
sort=field(title,max) asc
添加回答
舉報