Обновить или удалить данные из индекса Solr? - PullRequest
2 голосов
/ 28 января 2011

У нас есть php-приложение, которое имеет огромную базу данных Mysql и поисковый индекс от Solr (с SolrPhpClient).

Перед обновлением нашего индекса (через Cron) мы удаляем все товары, которых нет в наличии на данный момент. И только потом мы выбираем товары из Mysql (в наличии) и добавляем эти данные в Solr.

У меня есть идея, что существующий способ обновления нашего поискового индекса слишком дорог для производительности приложения. Фактически, мы переиндексируем все эти элементы (мы используем некоторые фильтры в схеме для русского слова, основанного на нижнем регистре и т. Д.), Вместо того, чтобы оставить отсутствующие позиции в индексе с флагом (inStock = 1). 1005 *

В будущем, я полагаю, у нас будет более 100 000 позиций (возможно, больше) в индексе. Таким образом, этот способ обновления сделает наш индекс слишком медленным и нагрузку на сервер слишком высокой.

Не могли бы вы высказать свои идеи об этой проблеме с позиций обновления индекса и выбора из него данных?

Спасибо за внимание ...

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Solr DIH - хорошее решение, так как вы, вероятно, в конечном итоге будете писать много стандартного кода на PHP, который уже доступен с DIH. Хотя я не могу комментировать конкретно эффективность DIH по сравнению с вашим собственным пользовательским кодом, мой опыт показывает, что DIH хорошо выполняет свою работу. 100К документов (при условии, что они не огромные документы), не очень большой. Я видел, как Solr обрабатывал миллионы документов без особых усилий.

Я не вижу необходимости иметь флаг "import-success" в БД. Solr поддерживает государство само по себе.

Необходимо убедиться, что в вашей таблице есть дополнительное поле, в котором есть метка времени обновления, а удаление - это софт-удаление. Solr будет использовать эту временную метку, чтобы выяснить, какая дельта будет импортирована. Флаг мягкого удаления будет использоваться для удаления документов, которые были удалены.

1 голос
/ 28 января 2011

Возможно, настроив удаление, вы получите лучшую производительность.Вот псевдокод:

  • Удалить только те товары, которых нет в наличии И в индексе Solr
  • Добавить / обновить только товары, которые есть в наличии, но не существуетв Solr ИЛИ инвентарный счет неправильный.

Таким образом, вы не переиндексируете каждый документ каждый раз, а только те, которые нуждаются в обновлении.

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