Мне нужно отсортировать грани, которые возвращаются из SOLR по релевантности


В моем индексе SOLR есть объекты песен, которые принадлежат объекту альбома более высокого уровня. Ниже приведен пример:

<song>
<album title>Blood Sugar Sex Magic</album title>
<song title>Under the Bridge</song title>
<description>A sad song about junkies</description>
</song>
На данный момент я могу создать фасет в названии альбома, чтобы поиск по песням также показал мне, какие альбомы содержат хиты по этому ключевому слову.

Поведение по умолчанию для SOLR заключается в том, что грани отображаются в порядке от большинства обращений к наименьшему. Однако я хочу добиться того, чтобы список фасетов был отсортирован в соответствии с релевантностью вершины хит для этого альбома.

Например, поиск по слову " sad "может показать грань с одним хитом для" Blood Sugar Sex Magic", а также может быть альбом под названием" Sad Clown songs", где есть 10 хитов. "Грустные песни клоунов "будут показаны как первая грань, даже если это может быть, что" Under the bridge " приходит как самая актуальная песня. Мой вопрос в том, как я могу вернуть все грани, но затем упорядочить их по релевантности песен в них? Если мне нужно будет переодеться или расширить какой-то базовый SOLR-код, что бы это было?

Заранее благодарю.

2 5

2 ответа:

Solr может сортировать фасеты только в лексикографическом порядке или по количеству (см. фасет .параметр сортировки ).

Если вы хотите реализовать другой порядок сортировки, я бы начал С КлассаSimpleFacets .

В конце концов, мы решили, что самый простой способ сделать это без необходимости изменять исходный код SOLR, будет запрашивать solr, запрашивать фасеты, а затем повторять результаты.

Не идеально, но пока работает.