我有一個Solr查詢,我試圖根據某個字段對結果進行排序。Solr:排除某些文件被排序
我想對其進行修改,使得只有一組特定的文檔被排序,其餘的僅僅被附加到排序列表的末尾。
有沒有辦法做到這一點?
請幫忙。
問候。
我有一個Solr查詢,我試圖根據某個字段對結果進行排序。Solr:排除某些文件被排序
我想對其進行修改,使得只有一組特定的文檔被排序,其餘的僅僅被附加到排序列表的末尾。
有沒有辦法做到這一點?
請幫忙。
問候。
對於schema.xml中的每個<fieldType>
定義,您可以設置一個sortMissingLast="true"
選項,該選項將爲您提供所需的排序行爲。對於您的具體示例,我會建議創建一個新字段,並使用sortMissingLast="true"
集合,然後根據給定的條件填充此附加字段,並且不會爲排序時希望顯示在最後的那些文檔設置值。
感謝大家提供你的投入。但是,是否有可能根據文檔中存在的某些字段在查詢本身中處理此問題。意思是,每個文檔都有一個字符串數組值,我只想對這些數組中具有特定值的文檔進行排序,並將其餘文檔附加到結果集的底部。這是可行的嗎? –
要添加,使用的排序字段與此字符串數組字段不同。 –
Jayendra的答案更適合您基於字符串數組中特定值進行排序的用例。 –
如果您想按照特定的動態字段條件進行排序,可以使用匹配條件提高字段並按分數排序。例如
bq=some_field:some_value^10
這將提高只匹配條件的文檔的分數。
此外,對於所有其他文件,得分將保持不變,並且會按照自誇的文件。
編輯: -
可以在多個領域促進例如bq=string_array_field:some_value^10&bq=ranking^10
會將匹配值的文檔和排名較高的文檔提升到最高。
其他文件將隨之而來。
是否可以使用boost查詢來排序其他字段?我想根據名爲'Ranking'的自定義數字字段對結果進行排序。對於字符串數組字段具有特定的一組值並具有較高值的文檔應該首先出現在結果中。 –
更新了答案... – Jayendra
感謝您的意見。但排序似乎沒有正常工作。陣列字段我有被定義爲:
您想要根據查詢本身排序的文檔的特定集合,還是事先知道它們?如果是後者,您可以使用佩奇庫克的答案。 – arun