Мне нужно отсортировать аспекты, которые возвращаются из 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 заключается в том, что фасеты отображаются в порядке от наибольшего к наименьшему. Однако я хочу добиться того, чтобы список аспектов был отсортирован в соответствии с релевантностью главного хита для этого альбома.

Например, поиск по слову «грустный» может показать грань с одним попаданием «Магия секса с кровяным сахаром», а также может быть альбом под названием «Песни грустного клоуна», в котором есть 10 хитов. «Грустные клоунские песни» будут первыми, хотя, возможно, «Under the bridge» окажется наиболее актуальной песней.

Мой вопрос в том, как я могу вернуть все аспекты, но затем упорядочить их по релевантности песен в них? Если бы мне нужно было изменить или расширить некоторый базовый код SOLR, что бы это было?

Заранее спасибо.


person Pinguthepenguin    schedule 17.05.2010    source источник


Ответы (3)


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

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

person Mauricio Scheffer    schedule 17.05.2010

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

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

person Pinguthepenguin    schedule 18.06.2010

Вы можете использовать Edismax для выполнения поискового запроса и использовать группировку результатов для группировки по определенному полю, в вашем случае вы упомянули название альбома.

https://lucene.apache.org/solr/guide/7_0/result-grouping.html

https://lucene.apache.org/solr/guide/7_0/the-extended-dismax-query-parser.html

person Paul    schedule 31.01.2019