2016-10-28 28 views
0

我想通過「字段1」來添加排序,如果它存在於文件,並通過「場2」如果沒有。 請用查詢語法幫助我。Apache Solr實現:排序字段中的一個(與條件)

+0

你的意思是說你的收藏中有兩種不同類型的文件 - 一種是field1,另一種是field2?或者你的意思是說,所有文件都有field1和field2,但有時field1中沒有數據? – jb62

+0

我目前沒有管理界面,但是我會嘗試一個查看兩個字段的查詢,可能是您需要的全部內容......我會先在管理界面上嘗試它 - 使用edismax - 這裏面,你可以使用QF場,您可以輸入字段1,字段2。我相信 – jb62

+0

事情是這樣的:QF =「字段1^2場2」中的「^」提升由比特字段1(2)和升壓只適用於field1中存在某些內容的情況。 – jb62

回答

0

正如已經指出在這個SO question

嘗試使用這樣的int字段:

sort=min(def(A_160018,9000000),def(A_chandigarh1,9000000))

字符串字段的選項將是核心/收集額外的領域使用包含字段的連接 - 例如創建時明確寫入文檔中的fullname: lastname + ' ' + firstname。 然後你仍然可以做sort=fullname asc

+0

我需要它字符串字段和新的組合場不適合這個任務(因爲排序字段可以動態改變,在這種情況下,我必須重建對每一個變化的所有文件,這些合併域) –

+0

的方式,排序目前在lucene中構建,不允許任何其他用於搜索的雙打。這就是爲什麼sort函數「if(exists(firstname),firstname,lastname)asc'不能工作,solr在'FunctionValues#doubleVal(int)'方法返回'UnsupportedOperationException'的原因。只是作爲一個提示'名字asc'作爲'ORD(名稱)asc' –

+0

感謝您的幫助處理(它返回一個double值),我創建了自己的功能(基於默認自定義函數)與字符串類型比較 –