Является ли MongoDB действующей альтернативой реляционным db + lucene?

В новом проекте мне нужно использовать lucene для поиска искателя. Этот поисковик будет очень важной (и большой) частью проекта. Является ли действительная или удобная замена Relational Database + Lucene с MongoDb?

edit: Хорошо, я уточню: я не спрашиваю о риске, я могу заплатить эту цену в этом проекте. Я имею в виду: ориентирован ли MongoDB на подобные вещи? Могу ли я создать полноценную поисковую систему с тем же успехом, что и на Lucene?. Друг указывает мне на MongoDB как альтернативу, но я не вижу, идет ли производительность Lucene с альтернативой документа (а потом, я тоже увижу ее в MongoDB), или, наоборот, инвертированный индекс и оптимизация являются дополнением независимо от ориентации документа.

Ответ 1

Технически вы можете выполнять полнотекстовый поиск с помощью MongoDB, но вам не хватает многого, что может предложить поставщик полного текстового поиска. Мне нравится MongoDB, но я бы с ним связался с полнотекстовым поисковым провайдером (например, Lucene или Sphinx), если время на реализацию вообще не вызывает беспокойства. Я думаю, что удобная способность MongoDB индексировать массивы слов лучше оставить для пометки и поиска на основе тегов, чем полнотекстовый поиск.

Поиск (получение информации) заключается не только в том, чтобы захватить любые документы, которые соответствуют, если вы хотите, чтобы ваши результаты поиска имели какую-либо значимость во всем, что вам нужно что-то в соответствии с TF-IDF, фразовое сопоставление (слова в последовательности баллов выше) или любое количество других ИК-методов для улучшения точности поиска. Если вы используете MongoDB, вам нужно реализовать все это с нуля.

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

Ответ 3

Посмотрите, но медленнее (см. здесь)

  • Вам придется делать расщепление слов и судить о себе.
  • Ранжирование запросов 'требует, чтобы код, предоставленный пользователем, выполнял это'

Ответ 4

MongoDb - это NOSQl, Lucene и SOLR - это поисковые системы, и добавление другой вещи в сравнение - это кеши, такие как Terracota, вместе с EhCache. Все имеют свою собственную цель.

Если поиск выполняется с полным текстовым поиском, требуется установка релевантности, например, отображение результатов с совпадением текста в ранжировании заголовка продукта, а не с текстом в дескрипции, и многие такие текстовые функции. Также ранжирование, релевантность, звуковое сходство, частичное совпадение слов и т.д. И т.д. Все это лучше всего обрабатывать системами хранения на основе поиска, такими как SOLR и Lucene.

Если ваши критерии являются более точными, и вам не нужно, чтобы ваши объекты данных презентации были прочными, просто используйте кеш lke Terracota.

Если вам требуется более быстрое извлечение, а также необходимо сопоставить и объединить данные в один источник данных, а также потребовать, чтобы агрегированные данные были прочными, используйте NOSQL, например Mongodb.

Ответ 5

Я не знаком с MongoDB, поэтому я не могу напрямую ответить на этот вопрос, но я хотел бы отметить, что в отличие от Lucene (которому около десяти лет) и реляционных баз данных (которые существуют в течение десятилетий) MongoDB меньше чем три года.

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

Даже если это стабильно и достаточно эффективно, вы можете столкнуться с проблемами с ограниченной поддержкой в ​​виде веб-сайтов/учебных пособий и т.д. (из-за небольшой базы пользователей). У вас также есть шанс, что он будет прекращен.

Возможно, стоит воспользоваться этим шансом, но вам нужно сделать это с открытыми глазами и не ослепнуть "о, взгляните на эффект блестящей новой игрушки".

Ответ 7

Lucene - это стабильный и стабильный продукт. Увы, то же самое еще не относится к MongoDB. Поэтому я бы подумал, что Lucene plus RDBMS - гораздо менее рискованный вариант.

Конечно, в определенной степени это зависит от характера проекта: насколько важна "очень важная (и большая)"? Другое дело, есть ли у вас предыдущий опыт MongoDB (я предполагаю, что нет)? Если вы можете получить доступ к людям, имеющим опыт, то это уменьшит риск.

Ответ 8

После посещения Devoxx 2011 и участия в презентации из 10Gen, я написал небольшой блог, сравнивающий MongoDB с базами данных РСУБД. MongoDB является одним из популярных Nosql dbs.As заявлено в ответах, прежде чем MongoDB является NoSQL db, который отличается от выходящих основных баз данных rdbms.

http://blog.iprofs.nl/2011/11/25/is-mongodb-a-good-alternative-to-rdbms-databases-like-oracle-and-mysql

Ответ 9

Для решений полнотекстового поиска я использовал Lucene и Sphinx раньше, но они не так хороши, чтобы получать наилучшие результаты по предоставленному ключевому слову. Поэтому я использовал mongodb полнотекстовый плагин MongoLantern, который очень хорош в этом. Более того, с точки зрения производительности он использует MongoDB как бэкэнд-движок, поэтому проблем с производительностью вообще нет. ожидая большего количества отзывов с точки зрения удобства использования продукции MongoLantern.

https://sourceforge.net/projects/mongolantern/

Ответ 10

Нет, это не так, поскольку MongoDB не является реляционным.