как индексировать данные в solr из базы данных автоматически - PullRequest
7 голосов
/ 24 июня 2011

У меня есть база данных MySql для моего приложения.Я реализовал поиск Solr и использовал dataimporthandler (DIH) для индексации данных из базы данных в Solr.мой вопрос: есть ли способ, если база данных обновляется, то мои индексы solr автоматически получают обновление для новых данных, добавляемых в базу данных. .Это означает, что мне не нужно запускать процесс индексации каждый раз, когда меняются таблицы базы данных. Если да, то, пожалуйста, скажите, как мне этого добиться.

Ответы [ 4 ]

4 голосов
/ 24 июня 2011

Я не думаю, что в Solr есть возможность, позволяющая индексировать данные при любых обновлениях БД.

Но могут быть такие возможности, как, с помощью Триггеры - есть возможность запустить внешнее приложение из триггеров.

Напишите CRON для запуска скрипта PHP, который выполняет чтение из БД и индексирует его в Solr. Напишите триггер (который вызывает этот скрипт) для операции CRUD и выведите его в БД, поэтому, когда что-то случится с БД, этот триггер вызовет вышеуказанный скрипт, и индексация может произойти.

Пожалуйста, смотрите:

Вызов сценария PHP из триггера MySQL

Автоматическое планирование:

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

1 голос
/ 05 августа 2015

вы можете импортировать данные, используя ваш браузер и диспетчер задач. выполните следующие действия на сервере Windows ... Перейти к административным инструментам => задача Schedular Нажмите «Создать задачу»

Теперь с помощью вкладки будет открыт экран «Создать задачу». Общие, Триггеры, Действия, Условия настройки.

На вкладке «Общие сведения» введите имя задачи «Solrdataimport» и в различиях введите «Импорт данных MySQL»

Теперь перейдите на вкладку «Триггеры». Нажмите «Новый» в настройке «Проверка ежедневно». В дополнительных настройках повторяйте задание каждые ... Устанавливайте время там, где хотите. Нажмите OK

Теперь перейдите к действиям, нажмите кнопку, нажмите кнопку, и в настройках кнопки IN укажите Program / Script "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe", это путь установки браузера chrome. В разделе Добавить аргументы введите http://localhost:8983/solr/#/collection1/dataimport//dataimport?command=full-import&clean=true и нажмите OK

Использование всего вышеперечисленного процесса. Импорт данных запустится автоматически. В случае остановки процесса Imort выполните все вышеперечисленные действия, просто заменив «Taskkill» программы / скрипта вместо «C: \ Program Files (x86) \ Google \». Chrome \ Application \ chrome.exe "под вкладкой" Действия "В аргументах введите" f / im chrome.exe "

Установите синхронизацию триггеров в соответствии с требованиями

1 голос
/ 24 июня 2011

Поскольку вы использовали DataImportHandler для начальной загрузки ваших данных в Solr ... Вы можете создать Delta Import Handler , который будет выполняться с использованием curl из задания cron, чтобы периодически добавлять изменения в базе данных до индекса. Кроме того, если вам нужно больше обновлений в реальном времени, как предложила @Rakesh, вы можете использовать триггер в своей базе данных и запустить вызов curl в Delta DIH.

0 голосов
/ 09 марта 2016

То, что вы ищете, это «дельта-импорт», и многие другие посты содержат информацию об этом.Я создал приложение и службу Windows WPF для выдачи команд Solr по регулярному расписанию, поскольку использование заданий CRON и планировщика заданий довольно сложно поддерживать, если у вас много ядер / сред.

https://github.com/systemidx/SolrScheduler

Вы просто помещаете файл JSON в указанную папку, и он использует REST-клиент для выдачи команд Solr.

...