Bootstrap

第41章 MongoDB 全文检索教程

第41章 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 Runoob",
       "tags": [
          "mongodb",
          "liulianjiangcsdn"
       ]
    }

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


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


使用全文索引

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


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

以下命令return 了如下包含 liulianjiangcsdn 关键词的文档数据:


    { 
       "_id" : ObjectId("53493d14d852429c10000002"), 
       "post_text" : "enjoy the mongodb articles on Runoob", 
       "tags" : [ "mongodb", "liulianjiangcsdn" ]
    }

如果尊敬的读者使用的是旧版本的 MongoDB,尊敬的读者可以使用以下命令:


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

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


删除全文索引

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


    >db.posts.getIndexes()

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


    >db.posts.dropIndex("post_text_text")

本专栏所有文章

第1章 MongoDB 教程第2章 NoSQL 简介教程
第3章 MongoDB 简介教程第4章 Windows MongoDB教程
第5章 Linux MongoDB教程第6章 OSX MongoDB教程
第7章 MongoDB 概念解析教程第8章 MongoDB 连接教程
第9章 MongoDB 创建数据库教程第10章 MongoDB 删除数据库教程
第11章 MongoDB 创建集合教程第12章 MongoDB 删除集合教程
第13章 MongoDB 插入文档教程第14章 MongoDB 更新文档教程
第15章 MongoDB 删除文档教程第16章 MongoDB 查询文档教程
第17章 MongoDB 条件操作符教程第18章 MongoDB $type 操作符教程
第19章 MongoDB Limit与Skip方法教程第20章 MongoDB 排序教程
第21章 MongoDB 索引教程第22章 MongoDB 聚合教程
第23章 MongoDB 复制(副本集)教程第24章 MongoDB 分片教程
第25章 MongoDB 备份与恢复教程第26章 MongoDB 监控教程
第27章 MongoDB Java教程第28章 MongoDB PHP 扩展教程
第29章 MongoDB PHP教程第30章 MongoDB PHP7教程
第31章 Node.js MongoDB教程第32章 MongoDB 关系教程
第33章 MongoDB 数据库引用教程第34章 MongoDB 覆盖索引查询教程
第35章 MongoDB 查询分析教程第36章 MongoDB 原子操作教程
第37章 MongoDB 高级索引教程第38章 MongoDB 索引限制教程
第39章 MongoDB ObjectId教程第40章 MongoDB Map Reduce教程
第41章 第41章 MongoDB 全文检索教程教程第42章 MongoDB 正则表达式教程
第43章 MongoDB 管理工具教程第44章 MongoDB GridFS教程
第45章 MongoDB 固定集合教程第46章 MongoDB 自动增长教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 喜欢不等于爱,喜欢不是爱。如果你不喜欢,别接受他人的爱。如果对方只是喜欢你不是爱你,也别接受他的喜欢。宝贝,你要记得,在这个世界上,你是独一无二的,没有人像你,你也不需要去代替谁,你也没有办法去代替谁。在你的人生舞台上,你是自己的主角,不需要去做谁的配角。宝贝,别在难过的时候接受别的男子的爱,那对他不公平,你也不会幸福,要分清楚,是喜欢还是同情或者是怜悯。可是宝贝,别如你所说的,找一个爱自己的人就好。世界上好男生很多,你会遇到喜欢你而你又喜欢他的人。所以宝贝,别放纵爱,别吝啬爱。
  • 别忘了答应自己要做的事,别忘了答应自己要去的地方。再见一月,你好二月。
  • 无论何时都不要拒人于千里之外,更不能过多地暴露自己的锋芒。会韬光养晦,在你自己变得更好之后再去做想做的事情。样你做好了自己,才能让自己的交际环境更好。
  • 生使一切的人站在一条水平线上,死使卓越的人露出头角来。
  • 每个人的经历乃至这个世界都是因缘所致,佛陀从来不会造出一个怎样的世界或是怎样的人类,所以,很多外在的事情是很难改变的,就好像你种下了一粒豆子,然后虔诚地祈求佛陀,让这粒种子长出一个南瓜,这是佛陀帮不了你的事情。
;