2014-09-03 2 views
1

Я начинаю с mongodb и его integraiton с Solr. С разных должностей я получил представление об этапах интеграции. Но нужна информация нижеИнтеграция MongoDB с Solr

  1. У меня есть данные в mongodb, для более быстрого поиска мы интегрируем его с Solr. Solr индексирует все записи mongodb. Является ли эта индексация однократной активностью после интеграции или нам нужно периодически обновлять Solr, чтобы индексировать записи, вставленные после интеграции?

  2. Если нам нужно периодически обновлять solr, он становится дополнительным накладным для поддержания его в Solr вместе с mongodb. Лучшие подходы к ее преодолению.

ответ

9

Насколько я знаю, у вас нет официального (поддерживается/полное) решение для интеграции MongoDB и Solr, но позвольте мне дать вам некоторые идеи/направление.

  1. Для меня самый лучший подход, когда можно изменить приложение и добавить к персистентности тот факт, что у вас есть все записи операций сделано в MongoDB и Solr в «же» время. Таким образом вы можете точно контролировать, что хотите отправить в базу данных и что хотите индексировать для полнотекстовой операции. Но, как я сказал, это означает, что вам нужно изменить код приложения. (Вы все равно измените его, чтобы иметь возможность запросить Solr, когда это необходимо). И да, вы должны сначала проиндексировать все существующие документы

  2. Вы можете использовать подход «коннектора», где MongoDB и Solr связаны друг с другом, это можно сделать разными способами.

    Вы можете использовать, например, разъем MongoDB доступный здесь: https://github.com/10gen-labs/mongo-connector

    LucidWorks, компания за Solr также имеет разъем для MongoDB, документированной здесь: http://docs.lucidworks.com/display/help/Create+a+New+MongoDB+Data+Source# (я не использовал его так не могу комментировать, но это также подход)

вы указываете # 2 верно, вы должны управлять два кластера и убедитесь, что данные находятся в синхронизации, а иногда и платить цену несоответствия между индексом Solr и документ просто обновлен в MongoDB ... Поэтому вам нужно посмотреть, подходит ли наилучший подход для вашего приложения, чтобы использовать MongoD в одиночку B или MongoDB с Solr (см комментарии ниже)

Просто небольшой комментарий в дополнение к этому ответу: Вы говорите «быстрее поиска», не уверен, что это должно быть причиной, если вы пишете правильные запросы с правильные индексы в MongoDB, вы должны иметь возможность сделать это без Solr. Если вы действительно ориентируетесь на силу значения solr: полный текстовый индекс (со всеми связанными функциями имеет смысл)

+0

Спасибо Tug Grall за подробный ответ. У нас также есть возможность создания текстового поиска в монго, и у него есть хорошая функция индексации, с точки зрения более быстрого поиска, будет ли она близка к производительности поиска Solr? Даже если он близок, с ним все в порядке. В основном мы пытаемся создать небольшую POC для индексирования результатов поиска VS Solr в mongodb. – Shivaprasad

+0

Да, это должно быть, но, как вы можете догадаться, это зависит от самого набора данных, типа запроса ... лучше всего проверить. (должно быть легко, так как у вас уже есть данные и знаете, какой запрос вы хотите) - просто чтобы я мог указать на документацию: http://docs.mongodb.org/manual/core/index-text/ –

1

Сколько у вас больших данных? У MongoDB есть несколько хороших механизмов индексации.

Существует мощный гео-api и для полнотекстового поиска есть http://docs.mongodb.org/manual/core/index-text/. Таким образом, было бы идеально определить, подходит ли ваша потребность в MongoDB или вам нужно переливаться в SOLR.

Об индексирующей части. Как часто, если ваши данные обновляются? Если вы можете позволить себе иметь редкие обновления, тогда вам может понадобиться пакетное задание с повторной индексацией раз в день. В идеале SOLR будет хорошо работать для некоторых основных данных.

+0

1 .Даты довольно огромны в ТБ, распределенных по нескольким осколкам. Обновление 2.Data осуществляется двумя способами: a: Online b: In Batch – Shivaprasad

+0

Возможно, было бы полезно попробовать соединитель Mongo от lucidworks, как это предлагает Tug Grall. Похоже, что он извлекает данные с помощью oplog, поэтому он может быть почти в режиме реального времени. Это может приблизиться к тому, что вы хотите - и, возможно, стоит посмотреть. Лучшее, конечно, было бы, если бы вы могли использовать Mongo 2.6+ и использовать API текстового поиска. Удачи! –

Смежные вопросы