2010-05-17 5 views
5

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

Например, поиск по слову «грустный» может показывать фасет с одним ударом для «Blood Sugar Sex Magic», а также может быть альбом под названием «Песни Sad Clown», где есть 10 хитов. «Грустные песни клоуна» будут показаны в качестве первого аспекта, хотя может быть, что «Под мостом» выступает как самая важная песня.

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

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

ответ

4

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

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

1

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

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