2013-07-18 5 views
1

Было зарегистрировано около 10 миллионов записей в db, и мы рады, что сделали это, так как мы видим преимущества высокой производительности, получая записи из solr вместо db. Эти данные используются в отчетности.Обновление индекса Solr

В настоящее время мы сохраняем плоские данные в индексе. Например:

Itemid, Companyname, Username, Status 

Как только изменение статуса элемента, например, от Received к Продан, мы называем Solr API для обновления записи. Все работает очень хорошо. У нас обновлен индекс в реальном времени, отчет работает хорошо.

Вопрос 1: Теперь в будущем можно сказать, что пользователь обновил название компании от компании A до компании B, или, может быть, имя пользователя от Майка до Джимми, как мы можем с этим справиться?

Мои мысли

  1. Слушайте пользователя и обновление компании события и обновлять только те SOLR индексы, где имя = старое название

  2. Keep идентификатор для компании и потребителя в индексе вместо имен. И после получения записей из solr, снова нажмите db, чтобы получить обновленное имя. Это будет смешанный подход, при котором основные поля происходят из индекса, и только такие поля приходят из таблицы БД

Вопрос 2: Я зову SOLR обновление для обновления индексов для Transistions состояния для каждого вызова. Теперь есть лучший способ сделать это? Я что-то теряю в плане производительности в будущем или когда частота переходов статуса возрастает?

Вопрос 3: В будущем необходимо указать еще один столбец в отчете, который еще не проиндексирован. Каков стандартный приемлемый способ для этого?

Пожалуйста, поделитесь своими советами экспертов по этому вопросу.

ответ

0

Вопрос 1: В настоящее время в будущем позволяет сказать, пользователь обновленного названия компании от компании А в компанию Б, или, может быть имя пользователя от Mike Джимми, как мы предполагаем справиться с этим?

У нас есть равный случай, и мы сделали это с помощью обработчика импорта данных solr. На стороне БД мы добавили столбец LAST_MODIFIED. При каждом обновлении строки БД автоматически изменила временные метки LAST_MODIFIED `на« сейчас ».

На Solr стороне мы запустить данных импорта заданий, вызвав Data Import Request Handler, вроде:

http://solrhost:8888/solr/mycore/dataimport?command=full-import&clean=false&optimize=false 

В этом случае обработчик запросов Импорт данных выполняется запрос DB с ИНЕКЕ на LAST_MODIFIED. Взгляните на this.

Для этого важно, чтобы вы определили уникальный идентификатор на Solr, как ваш Itemid

Вопрос 2: Я зову SOLR обновление для обновления индексов для статуса Transistions для каждого вызова. Теперь есть лучший способ сделать это? Am Я ничего не теряю с точки зрения производительности в будущем или когда увеличивается частота переходов статуса?

См. Вопрос 1. Это альтернативный способ, но не уверен, если это происходит быстрее.

Вопрос 3: В будущем необходимо указать еще один столбец в отчете, который еще не проиндексирован. Каков стандарт приемлемый способ для этого?

Для меня это: добавление нового поля в solr, перезапуск solr. Я, вероятно, передержу все документы. Требуется переиндексирование, если также выходящие документы получают дополнительную информацию.

Смежные вопросы