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

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 ",

   "tags": [

      "mongodb",

      ""

   ]

}

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


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


使用全文索引

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


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

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


{ 

   "_id" : ObjectId("53493d14d852429c10000002"), 

   "post_text" : "enjoy the mongodb articles on ", 

   "tags" : [ "mongodb", "" ]

}

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


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

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


删除全文索引

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


>db.posts.getIndexes()

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


>db.posts.dropIndex("post_text_text")