2010-08-08 1 views
2

Я ищу стратегию представления индивидуального рейтинга пользователя в solr-документе. т.е. Пользователи могут поставить рейтинг 1-5 в документе, и я хочу представить это им, когда они ищут.Представляя результаты SOLR, объединенные с отдельными пользовательскими данными

Я могу думать о двух общих подходах.

  1. Сохраните оценки в моей СУБД и запросите их после получения результатов solr и объедините данные в бизнес-логике.

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

Предполагая, что большая пользовательская база, я волнуюсь, подход 2 может выйти из-под контроля. Как «широко» вы можете пойти с solr-документом? Можете ли вы поместить десятки тысяч атрибутов в документ? Повлияло ли влияние производительности на 2 лучше, чем второй удар на sql db (подход 1)?

Есть ли другие подходы, о которых я не думаю?

+0

Я задал такой вопрос некоторое время назад. http://stackoverflow.com/questions/8411860/can-solr-boost-results-on-number-of-social-likes. Проверьте несколько связанных вопросов справа. – aitchnyu

ответ

0

Я использовал номер подхода 1. Поскольку количество рейтингов низкое (вероятно, менее 1000) на пользователя, я просто кеширую все свои рейтинги при входе в систему и храня в памяти. Затем, когда вы показываете результаты SOLR, очень быстро применять рейтинги там, где это необходимо.

Это избавляет вас от необходимости вызова базы данных для каждого результата и не слишком сильно борется с сервером. Кроме того, когда пользователь обновляет свои рейтинги, вы просто обновляете БД и аннулируете кеш. Вам не нужно делать UPDATE-вызов для документа SOLR.

+0

Пока это выглядит так, как будто все будет хорошо. Запрос к solr сразу же после запроса на sql для ввода уникальных пользовательских данных. Я вижу, возможно, даже заменяя уникальные данные самим solr, но я думаю, что все равно будет два запроса, чтобы ограничить количество атрибутов в основных данных. – kareem

0

Третьим вариантом может быть добавление дополнительного индекса Solr, который содержит только идентификатор документа, идентификатор пользователя и оценку, присвоенную этому документу пользователем. Тогда было бы очень просто и быстро запросить счет по документу &.

0

Я бы пошел с номером 2 и только периодически обновлял рейтинг. Таким образом, вы можете смешать рейтинг с оценкой релевантности, рассчитанной Solr.

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