MongoDB 全文检索

MongoDB 全文检索

全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。

这个过程类似于通过字典中的检索字表查字的过程。

MongoDB 从 2.4 版本开始支持全文检索,目前支持15种语言的全文索引。

danish

dutch

english

finnish

french

german

hungarian

italian

norwegian

portuguese

romanian

russian

spanish

swedish

turkish

启用全文检索

MongoDB 在 2.6 版本以后是默认开启全文检索的,如果你使用之前的版本,你需要使用以下代码来启用全文检索:

>db.adminCommand({
   setParameter:true,textSearchEnabled:true})

或者使用命令:

mongod --setParameter textSearchEnabled=true

创建全文索引

考虑以下 posts 集合的文档数据,包含了文章内容(post_text)及标签(tags):

{
   
   "post_text": "enjoy the mongodb articles on Caiyuan",
   "tags": [
      "mongodb",
      "caiyuan"
   ]
}

我们可以对 post_text 字段建立全文索引,这样我们可以搜索文章内的内容:

>db.posts.ensureIndex({
   post_text:"text"})

使用全文索引

现在我们已经对 post_text 建立了全文索引,我们可以搜索文章中的关键词 caiyuan:

>db.posts.find({
   $text:{
   $search:"caiyuan"}})

以下命令返回了如下包含 caiyuan关键词的文档数据:

{
    
   "_id" : ObjectId("53493d14d852429c10000009"), 
   "post_text" : "enjoy the mongodb articles on Caiyuan", 
   "tags" : [ "mongodb", "caiyuan" ]
}

如果你使用的是旧版本的 MongoDB,你可以使用以下命令:

>db.posts.runCommand("text",{
   search:"caiyuan"})

使用全文索引可以提高搜索效率。

删除全文索引

删除已存在的全文索引,可以使用 find 命令查找索引名:

>db.posts.getIndexes()

通过以上命令获取索引名,本例的索引名为post_text_text,执行以下命令来删除索引:

>db.posts.dropIndex("post_text_text")

相关推荐

  1. MongoDB 全文检索

    2023-12-08 02:30:16       55 阅读
  2. MongoDB 全文检索

    2023-12-08 02:30:16       29 阅读
  3. ElasticSearch——01全文检索

    2023-12-08 02:30:16       49 阅读
  4. 全文检索&ElasticSearch简介

    2023-12-08 02:30:16       34 阅读
  5. Mongodb 文本检索

    2023-12-08 02:30:16       56 阅读
  6. 实现全文检索的方法

    2023-12-08 02:30:16       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 02:30:16       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 02:30:16       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 02:30:16       82 阅读
  4. Python语言-面向对象

    2023-12-08 02:30:16       91 阅读

热门阅读

  1. 好用的开源项目地址

    2023-12-08 02:30:16       56 阅读
  2. 使用Pytorch从零开始构建RNN

    2023-12-08 02:30:16       56 阅读
  3. mysql 与 Oracle 的区别,oracle 与 mysql分页查询的区别

    2023-12-08 02:30:16       50 阅读
  4. MySQL数据库,初学SQL知识点引入

    2023-12-08 02:30:16       55 阅读
  5. 【Qt】QDialog的成员函数exec()的返回值

    2023-12-08 02:30:16       70 阅读
  6. dockerfile与docker-compose解释及对比

    2023-12-08 02:30:16       47 阅读
  7. [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件

    2023-12-08 02:30:16       51 阅读
  8. Appium:进行iOS自动化测试遇到的问题与解决方案

    2023-12-08 02:30:16       66 阅读