Является ли MongoDB действительной альтернативой реляционному дБ + люцену? - PullRequest
34 голосов
/ 30 марта 2010

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

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

Ответы [ 10 ]

19 голосов
/ 31 марта 2010

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

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

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

3 голосов
/ 13 апреля 2010

CouchDb представляется (и другой) возможной альтернативой для использования Lucene через couchdb-lucene проект.

2 голосов
/ 29 июня 2014

MongoDb - это NOSQl, Lucene и SOLR - поисковые системы, и в сравнение добавляется еще одна вещь - кеши, подобные Terracota и EhCache. У всех есть своя цель.

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

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

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

2 голосов
/ 30 марта 2010

Выглядит возможно, но медленнее ( см. Здесь )

  • Вам придется разбивать слова и останавливать себя.
  • Для ранжирования запросов "требуется код, предоставленный пользователем"
1 голос
/ 04 октября 2011

Другим вариантом является использование эластичного поиска (в люцене) ширина couchdb: http://www.elasticsearch.org/blog/2010/09/28/the_river_searchable_couchdb.html

1 голос
/ 30 марта 2010

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

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

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

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

0 голосов
/ 12 февраля 2012

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

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

0 голосов
/ 20 декабря 2011

После посещения Devoxx 2011 и посещения презентации от 10Gen я написал небольшой блог, сравнивающий MongoDB с базами данных RDBMS. MongoDB является одной из популярных баз данных Nosql. Как указывалось в ответах до того, как MongoDB является базой данных NoSQL, которая отличается от существующих основных баз данных rdbms.

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

0 голосов
/ 30 марта 2010

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

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

0 голосов
/ 30 марта 2010

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

...