Sunspot: как реализовать иерархию результатов поиска? - PullRequest
0 голосов
/ 19 марта 2012

В настоящее время я работаю над реализацией Solr через Sunspot в проекте Rails.

Глядя на документацию, я не понимаю, как реализовать иерархию результатов поиска, под этим я подразумеваю:

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

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

  • И так далее.

Буду признателен за любые рекомендации или ссылки о том, как реализовать такую ​​систему.

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Я слышал этот запрос много раз за эти годы, и он не работает так, как ожидают люди. Наихудшее поведение довольно плохое и довольно распространенное.

Возможно, вы не хотите делать именно это. Как только вы включите общий термин, такой как «Jr», вам придется показывать тысячи результатов с изображениями перед первым профилем без изображения, даже если этот результат является правильным.

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

Вместо этого улучшайте результаты с помощью качественного фактора. Если есть два профиля «Джо Смит», то один с изображением лучше и должен быть показан первым. Вы можете сделать это с помощью параметра boost в обработчике результатов edismax. Если в профиле есть фотография, используйте повышение 2, в противном случае повышение 1. Возможно, вам придется поиграть с точными значениями, чтобы получить то, что вы хотите.

0 голосов
/ 19 марта 2012

Если вы хотите, чтобы сначала отображались пользователи с фотографиями профиля, а те, кто нет, -
Вы можете использовать сортировку с sortMissingLast , это приведет к тому, что все записи, которые не имеют никакого значения, появятся последними.
иначе есть значение по умолчанию для записей, не имеющих значения, чтобы они отображались последними при сортировке.

...