Посоветуйте, пожалуйста, оптимальное решение для полнотекстового поиска в mongoDB - PullRequest
4 голосов
/ 15 марта 2011

Документы в моей базе данных имеют имена и описания среди других полей.Я хотел бы позволить пользователям искать эти документы, предоставляя некоторые ключевые слова.Ключевые слова должны использоваться для поиска как в поле имени, так и в поле описания.Я прочитал документацию mongoDB по полнотекстовому поиску , и это выглядит действительно красиво и легко, если я хочу искать ключевые слова в поле имени моих документов.Однако поле описания содержит текст произвольной формы и может содержать до 2000 символов, поэтому в каждом документе может быть несколько сотен слов.Я мог бы относиться к ним так же, как к именам, и просто разбить все описание на отдельные слова и сохранить его как другой тегоподобный массив (согласно примеру с Mongo), но это кажется ужасной идеей - размер каждого документа может быть почти удвоенКроме того, есть такие символы, как точки, запятые и т. д.

Я знаю, что есть специальные решения именно для такого рода проблем, и я просто смотрел на Lucene.Net, я также видел, как Солр упоминался здесь и там.1005 *

Должен ли я реализовать эту функцию поиска в mongoDB или использовать специализированное решение?В настоящее время у меня есть только один экземпляр mongod и один экземпляр веб-сервера.Возможно, нам придется масштабироваться позже, но пока это все, что я использую.Буду признателен за любые предложения по реализации этой функции.

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Поддержка полнотекстового поиска запланирована на будущее. Однако прямо сейчас вы должны пойти с Solr и друзьями. Использование встроенной «полнотекстовой» функциональности не очень подходит для реального использования.

1 голос
/ 15 марта 2011

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

Цитата из документации MongoDB:

MongoDB обладает интересным функционалом что делает определенные функции поиска легко. Тем не менее, это не посвященный полнотекстовая поисковая система.

Итак, для более продвинутой функциональности полнотекстового поиска, я думаю, что выделенный движок был бы более подходящим. У меня нет опыта в этой области, поэтому я не могу предложить много предложений, кроме моих мыслей, если бы я был в одной лодке:

  • сколько работы потребовалось для использования выделенного полнотекстового поискового движка вместо функциональности MongoDB?
  • добавляет ли это больше сложности / стоит ли это того?
  • Было бы проще / проще использовать MongoDB и просто взять удар на дополнительное дисковое пространство?
  • возможно, MongoDB в будущем будет поддерживать более полнотекстовые функции (в конце концов, он быстро развивается)
...