Представление результатов Solr объединена с отдельными пользовательскими данными

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

  •  26-09-2019
  •  | 
  •  

Вопрос

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

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

  1. Храните рейтинги в моем RDBMS и запрашивайте его после получения результатов Solr и объедините данные в бизнес-логике.

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

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

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

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

Решение

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

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

Другие советы

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

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

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

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