我爲我的Solr數據庫中的每個文檔分配自定義「流行度」分數。我希望搜索結果由此自定義「分數」字段排序,而不是默認的內置相關性分數。Solr中的自定義分數排序不會一致排序
首先,我定義我的得分字段:
<fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
<field name="score" type="sint" stored="true" multiValued="false" />
然後我重建索引,將每個文檔的得分。 要運行一個查詢,我用的是這樣的:
(text:hello)+_val_:"score"
現在我希望的文件來用「分數」外地趕回來分類的,但我得到的卻是:
<doc>
<int name="score">566</int>
<str name="text">SF - You lost me at hello...</str>
</doc>
<doc>
<int name="score">41</int>
<str name="text">hello</str>
</doc>
<doc>
<int name="score">77</int>
<str name="text">
CAGE PAGE-SAY HELLO (MIKE GOLDEN's Life Is Bass Remix)-VIM
</str>
</doc>
<doc>
<int name="score">0</int>
<str name="text">Hello Hello Hello</str>
</doc>
請注意,分數回到了無序狀態:566,41,77,0。奇怪的是,它只是通過某種查詢來排序。我不確定該模式是什麼,但到目前爲止,只有當分數「0」返回到搜索結果中時,纔會看到排序錯誤。
我試過IntField而不是SortableIntField,而且我試過把「sort = score desc」作爲查詢參數,而沒有改變行爲。
我做錯了什麼,或者只是誤解使用val:我的查詢中的「分數」的含義?
編輯:我試圖重命名「分數」字段「流行」,並得到了相同的結果。
對不起,但我試圖重命名字段'流行',重建索引,並得到相同的結果。 – cwick
此外,不要看到字段被標記爲真,這將不允許在字段上排序,並會拋出錯誤。 – Jayendra
我試着用indexed =「true」和indexed =「false」,它沒有效果。我沒有收到indexed =「false」的錯誤消息。 – cwick