Соль индексация занимает слишком много времени - PullRequest
4 голосов
/ 12 октября 2011

Нам нужно создать наш индекс в Solr, и это занимает слишком много времени.У нас есть около 800 тыс. Записей, и, похоже, это займет от 15 до 20 дней со скоростью, с которой они индексируются.Сейчас мы ищем одноразовый индекс.Есть предложения?

Ответы [ 3 ]

3 голосов
/ 14 октября 2011

Я написал систему для индексации около 300 000 записей, и после некоторых тестов производительности я настроил SOLR для фиксации каждые 5 минут. Посмотрите на solrconfig.xml. Существует несколько директив, связанных с фиксацией изменений, но вы не должны фиксировать их после каждого обновления записи. Либо фиксируйте после каждых 100-200 записей, либо фиксируйте каждые 5 минут. Это особенно важно во время переиндексации всех данных.

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

3 голосов
/ 23 декабря 2011

Из моего опыта индексация больших кусков данных может занять некоторое время. У индекса, над которым я работаю, есть 2 миллиона предметов (размер 10G). Полный индекс занимает около 40 часов с использованием БД.

Есть несколько факторов, которые могут замедлить вас:

  • Память. Одна из них заключается в наличии памяти на коробке, а другая заключается в том, чтобы позволить Solr использовать ее. Дайте Solr столько, сколько вы можете позволить для индексации времени (вы можете легко изменить это позже)
  • Сборщик мусора. С настройкой по умолчанию у нас было много проблем (после 20-30 часов индексация была прервана, и нам пришлось начинать с самого начала)
  • Сделать результаты кеша Solr из БД
  • Проверьте все запросы, насколько они дороги
  • Индекс в меньших партиях. Если бы я индексировал 300 тыс. Элементов, это заняло бы гораздо больше времени, чем индексирование их в 3 партии по 100 тыс.
  • Наличие большого количества полнотекстовых хранимых полей не помогает (если вам не нужно что-то хранить, не делайте этого)
0 голосов
/ 12 октября 2011

Есть ли причина, по которой индексация занимает так много времени?какие-либо шаги предварительной обработки, требующие времени?потому что это обычно занимает много времени.
Это записи в базе данных или документы с расширенными возможностями?
Как вы индексируете данные?Вы выполняете частые коммиты или оптимизацию?
Как работает системная память, процессор, пространство?
Возможно, вы захотите вернуться к некоторым настройкам в solrconfig.xml

Если всеВыше, кажется, хорошо, вы можете попробовать вариант -
Создать отдельные ядра и запустить параллельные задания для индексации данных.После завершения индекса вы можете объединить его или использовать распределенный поиск .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...