Синхронизировать документы Solr с записями базы данных - PullRequest
4 голосов
/ 12 июля 2010

Интересно, есть правильный способ решения документов с синхронизацией записей базы данных. У меня обычно возникают проблемы: есть документы solr, в то время как нет записей базы данных, на которые ссылается solr. Кажется, некоторые записи БД были удалены, но не было триггера для обновления solr. Я хочу написать грабли для удаления документов в solr, которые периодически запускаются.

Есть предложения?

Chamnap

Ответы [ 3 ]

6 голосов
/ 12 июля 2010

Да, есть один.

Вы должны использовать DataImportHandler с функцией дельта-импорта.

По сути, вы указываете запрос, который обновляет только строки, которые были изменены, вместо того, чтобы перестраивать весь индекс. Вот пример .

В противном случае вы можете добавить в свое приложение функцию, которая просто инициирует удаление документов по HTTP как в вашей БД, так и в вашем индексе.

0 голосов
/ 13 июля 2010

В дополнение к вышесказанному, "мягкое" удаление путем установки столбца deleted или deleted_at является отличным подходом.Таким образом, вы можете запускать сценарий для периодической очистки при необходимости удаленных записей из индекса Solr.

Вы упоминаете об использовании задачи rake - с этим приложением Rails вы работаете?Большинство клиентов Solr для приложений Rails должны поддерживать удаление записей через after_destroy hook.

0 голосов
/ 12 июля 2010

Я использую Java + Java DB + Lucene (на котором основан Solr) для моего текстового поиска и записей в базе данных.Мое решение - сделать резервную копию, а затем заново создать (удалить + создать) базу данных Lucene для синхронизации с моими записями в базе данных Java.Это кажется самым простым подходом, единственная проблема в том, что не рекомендуется часто запускать.Это также означает, что ваши записи не обновляются в режиме реального времени.Я запускаю свою пакетную работу каждую ночь, чтобы все изменения отражались на следующий день.Надеюсь, это поможет.

Также прочитайте статью о синхронизации записей Solr и db здесь в разделе «Нет синхронизации».В нем говорится, что это не легко, но возможно в некоторых случаях.Было бы полезно, если бы вы указали свой язык программирования, чтобы больше людей могло помочь вам.

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