Solr и MySQL, Как сохранить обновленный индекс, и нужна ли БД, даже если она проста? - PullRequest
6 голосов
/ 13 апреля 2011

Я начинающий с Solr, так что терпите меня. :)

В моем текущем проекте у меня очень простая БД - всего одна таблица, содержащая 4 поля: id, имя, тема, сообщение.

Как я понимаю, каждый раз, когда новая запись добавляется (или удаляется), мне нужно было бы добавить эту запись в индекс, выполнив, по сути, две операции: вставка записи в БД и добавление ее в индекс.

Это стандартная процедура или есть способ указать Solr автоматически переиндексировать таблицу БД через некоторый интервал или при наличии обновлений?

Кроме того, поскольку таблица очень проста, имеет ли смысл хранить эту информацию в БД? Почему бы просто не сохранить его в индексе Solr, учитывая, что я хочу, чтобы записи можно было искать по имени, теме и сообщению?

Мои настройки: Java, Hibernate, MySQL и Solrj.

Ответы [ 2 ]

5 голосов
/ 18 апреля 2011

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

Если вы используете БД, вы можете настроить Solr для индексации напрямую из БД, используя DataImportHandler . Для вашей схемы это должно быть довольно просто, но это может быстро стать болезненным, поскольку ваша БД становится более сложной. Я думаю, что есть преимущество использования объектов Hibernate, которые вы уже настроили, и просто вставка их с помощью Solrj. Другая проблема с DataImportHandler заключается в том, что он полностью контролируется с помощью http. Таким образом, вам нужно управлять отдельными заданиями cron (или другим кодом) для управления расписанием, используя wget или curl.

0 голосов
/ 13 апреля 2011

Единственная причина, по которой я вижу полезность БД, заключается в том, что она лучше поддерживает транзакции.В любом случае lucene (базовый механизм SOLR) может разрешить только один индексатор, поэтому вы не можете легко испортить базовую запись одновременной модификацией.

Насколько мне известно, вам не нужна БД.SOLR справится со всем, что вам нужно.

...