Результаты поиска Lucene сортируются по индивидуальному списку (уникальному для каждого пользователя).

StackOverflow https://stackoverflow.com/questions/1349419

Вопрос

В моем приложении есть аутентифицированные пользователи, которые имеют доступ к общей базе данных, содержащей до 500 000 элементов.У каждого из пользователей есть собственный общедоступный веб-сайт, и ему нужна возможность расставлять приоритеты отображаемых элементов (например, голосовать за них) на своем собственном сайте.

из 500 000 элементов у них может быть только до 200 приоритетных элементов, порядок остальных элементов имеет меньшее значение.

Каждый из пользователей будет расставлять приоритеты элементов по-разному.

Первоначально я задал здесь аналогичный вопрос по MySQL Результаты MySQL отсортированы по списку, который уникален для каждого пользователя. и получил хороший ответ, но я считаю, что лучшим вариантом может быть выбор решения, не индексированного sql.

Можно ли это сделать в Lucene? Есть ли другая технология поиска, которая лучше подойдет для этого.

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

Обновлять:повторно помечен сфинксом, поскольку я читал документацию и считаю, что он сможет делать то, что я ищу, с «значениями атрибутов для каждого документа», хранящимися в памяти - интересно услышать какие-либо отзывы по этому поводу от гуру сфинкса

Это было полезно?

Решение

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

"OR item_id=%d+X"

где X — количество повышения, которое вы хотели бы использовать.Вам, вероятно, придется эмпирически настроить это число, чтобы убедиться, что простое «за» не поместит его в начало списка поиска чего-то совершенно не связанного.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top