Использование solr/pysolr с колбой sqlalchemy

Я пытаюсь настроить solr для использования с postgres db, который я использую через склянку sqlalchemy orm. Я нашел библиотеку pysolr для этой цели, но не ясно, как настроить хуки в моделях sqlalchemy для обновления индекса solr. Есть ли примеры?

pysolr предлагает вставлять документы вручную, через solr.add, но не ясно, как бы вы разделяли индексы для разных таблиц базы данных.

Проведя некоторые исследования, я пришел к следующему подходу, и мне интересно, если это правильный путь:

  1. в моделях ORM подключите after_insert, after_update, after_remove и after_commit и вставьте / обновите / удалите данные объекта в solr в этих событиях.

  2. для разделения данных разных моделей используйте имя таблицы в качестве префикса в поле "id" документов solr. solr_id = db_table_name + db_id

  3. когда вы выполняете поиск, получаете все результаты, вручную фильтруете те, которые соответствуют требуемой таблице БД, извлекаете идентификаторы, ищите БД по этим идентификаторам и используете эти результаты БД.

Есть ли лучший способ сделать это? Благодарю.

1 ответ

SQLAlchemy а также Solr различная структура. Я думаю, что лучшее решение - реализовать скрипт для синхронизации данных. Запустите скрипт, чтобы обновить, возможно, 30 минут или час для новых данных.

Связывание механизмов вставки / обновления / удаления / фиксации в модели - плохой способ. Потому что если у ваших сервисов Solr возникнут какие-либо проблемы, это повлияет на ваш сайт (о доступе к базе данных). Сохраняйте разницу услуг независимо.

Другие вопросы по тегам