Я присваиваю индивидуальный показатель «популярности» для каждого документа в моей базе данных 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 : "оценка "в моем запросе?
РЕДАКТИРОВАТЬ: я попытался переименовать поле" оценка "в" популярность "и получил тот же результат.