MongoDB полнотекстового поиска
Создание индекса полнотекстового поиска для каждого слова, с указанием количества и расположения слова появляется в статье, когда запрос пользователя, программа поиска будет установлен заранее, чтобы найти индекс, и результаты поиска вернуться к способу поиска пользователя.
Этот процесс похож на искомое слово в слово процессе извлечения словаря таблицы.
MongoDB версии 2.4 с самого начала для поддержки полнотекстового поиска, в настоящее время поддерживает 15 языков (временно не поддерживает китайский) полнотекстовый индекс.
- датский язык
- нидерландский
- английский
- финский язык
- французский
- немецкий
- венгерский
- итальянский
- норвежец
- португальский
- румын
- русский
- испанский
- шведский язык
- турецкий
Включить полнотекстовый поиск
После того, как MongoDB версии 2.6 включена по умолчанию полнотекстового поиска, если вы используете предыдущую версию, вам необходимо использовать следующий код, чтобы включить полнотекстового поиска:
>db.adminCommand({setParameter:true,textSearchEnabled:true})
Или используйте команду:
mongod --setParameter textSearchEnabled=true
Создание полнотекстового индекса
Рассмотрим следующие наборы данных сообщений документов, в том числе содержание статьи (post_text) и меток (тегов):
{ "post_text": "enjoy the mongodb articles on w3cschool.cc", "tags": [ "mongodb", "w3cschool" ] }
Мы можем построить полнотекстовый индекс post_text поля, так что мы можем найти содержание статьи:
>db.posts.ensureIndex({post_text:"text"})
Использование полнотекстового индексирования
Теперь, когда мы установили полнотекстовый индекс post_text, мы можем осуществить поиск по ключевым словам в статье w3cschool.cc:
>db.posts.find({$text:{$search:"w3cschool.cc"}})
Следующая команда возвращает данные документа, содержащиеся w3cschool.cc следующих ключевых слов:
{ "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "enjoy the mongodb articles on w3cschool.cc", "tags" : [ "mongodb", "w3cschool" ] } { "_id" : ObjectId("53493d1fd852429c10000003"), "post_text" : "writing tutorials on w3cschool.cc", "tags" : [ "mongodb", "tutorial" ] }
Если вы используете старую версию MongoDB, вы можете использовать следующую команду:
>db.posts.runCommand("text",{search:" w3cschool.cc"})
Использование полнотекстового индексирования может повысить эффективность поиска.
Удалить полнотекстового индексирования
Удалите существующий полнотекстовый индекс, вы можете использовать команду поиска, чтобы найти имя индекса:
>db.posts.getIndexes()
Получить имя индекса выше команды, в этом случае индекс имени post_text_text, выполните следующую команду, чтобы удалить индекс:
>db.posts.dropIndex("post_text_text")