Solr MultiValue Fields и добавление значений

Я создаю поисковую систему и имею не такой уникальный идентификатор для множества разных имен... Так, например, может быть идентификатор B0051QVF7A, который будет иметь несколько имен, таких как «Kindle», «Amazon Kindle», «Amazon Kindle 3G», «Kindle Ebook Reader», «New Kindle» и т. д.

Проблема и вопрос, который у меня есть, заключается в том, что я пытаюсь ввести эти данные из БД из 11 миллионов строк. каждый читается по одному. Поэтому у меня нет всех имен каждого идентификатора. Я добавляю новые документы в список каждый раз.

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

Я знаю, что это может вызвать некоторые странные и замечательные «проблемы», если имя будет удалено (в приведенном выше примере «Новый Kindle» может быть удален при выпуске более нового Kindle), но я думаю о воссоздании индекса время от времени, для устранения подобных проблем (раз в месяц или около того. В настоящее время создание индекса занимает около 45 минут).

Итак, как добавить значение в многозначное поле в solr для существующего документа?


person TiernanO    schedule 18.10.2011    source источник
comment
возможный дубликат Обновить конкретное поле в индексе SOLR   -  person Mauricio Scheffer    schedule 18.10.2011


Ответы (1)


Поскольку, согласно вопросу, связанному с комментарием @Mauricio Scheffer... Solr в настоящее время не поддерживает обновление одного значения поля в существующем документе. Я вижу, что здесь может быть несколько вариантов...

  1. В вашем процессе, который извлекает данные из базы данных, когда он находит новое имя, ему нужно будет извлечь все поля для существующего документа из Solr, добавить новое значение и повторно отправить полный документ в Solr (возможно, вы уже делаете это ).
  2. Добавьте в свой код дополнительную логику, которая считывает данные из базы данных, чтобы собрать все уникальные имена для каждого документа перед вставкой документов в индекс. Однако, учитывая, что у вас есть ~ 11 миллионов записей, может быть ограничение ресурсов, из-за которого это будет невозможно.
person Paige Cook    schedule 18.10.2011
comment
спасибо за замечание. на самом деле я пробовал вариант 2... запрашивать все разные идентификаторы, а затем выбирать все данные из таблицы, где идентификатор = указанный идентификатор... немного медленнее, чем изначально, но, вероятно, быстрее, чем вариант 1... - person TiernanO; 19.10.2011