2013-07-16 198 views
0

我有一個Solr查詢,我試圖根據某個字段對結果進行排序。Solr:排除某些文件被排序

我想對其進行修改,使得只有一組特定的文檔被排序,其餘的僅僅被附加到排序列表的末尾。

有沒有辦法做到這一點?

請幫忙。

問候。

+0

您想要根據查詢本身排序的文檔的特定集合,還是事先知道它們?如果是後者,您可以使用佩奇庫克的答案。 – arun

回答

0

對於schema.xml中的每個<fieldType>定義,您可以設置一個sortMissingLast="true"選項,該選項將爲您提供所需的排序行爲。對於您的具體示例,我會建議創建一個新字段,並使用sortMissingLast="true"集合,然後根據給定的條件填充此附加字段,並且不會爲排序時希望顯示在最後的那些文檔設置值。

+0

感謝大家提供你的投入。但是,是否有可能根據文檔中存在的某些字段在查詢本身中處理此問題。意思是,每個文檔都有一個字符串數組值,我只想對這些數組中具有特定值的文檔進行排序,並將其餘文檔附加到結果集的底部。這是可行的嗎? –

+0

要添加,使用的排序字段與此字符串數組字段不同。 –

+0

Jayendra的答案更適合您基於字符串數組中特定值進行排序的用例。 –

1

如果您想按照特定的動態字段條件進行排序,可以使用匹配條件提高字段並按分數排序。例如
bq=some_field:some_value^10
這將提高只匹配條件的文檔的分數。
此外,對於所有其他文件,得分將保持不變,並且會按照自誇的文件。

編輯: -
可以在多個領域促進例如bq=string_array_field:some_value^10&bq=ranking^10會將匹配值的文檔和排名較高的文檔提升到最高。
其他文件將隨之而來。

+0

是否可以使用boost查詢來排序其他字段?我想根據名爲'Ranking'的自定義數字字段對結果進行排序。對於字符串數組字段具有特定的一組值並具有較高值的​​文檔應該首先出現在結果中。 –

+0

更新了答案... – Jayendra

+0

感謝您的意見。但排序似乎沒有正常工作。陣列字段我有被定義爲:格式1 FORMAT2。有些文檔可以包含format3和format4這個字段。等級字段是具有數值的浮點字段。數值越低,等級越高。應該按照包含format1和format2的文檔始終顯示高於format3和format4的方式對結果進行排序。我想這樣的查詢:BQ =格式:(格式或FORMAT2)^ 50 = BQ排名^ 50,但沒有奏效 –