浅析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",
   "runoob"
  ]
}

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

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

使用全文索引

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

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

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

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

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

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

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

删除全文索引

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

>db.posts.getIndexes()

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

>db.posts.dropIndex("post_text_text")

以上就是浅析MongoDB 全文检索的详细内容,更多关于MongoDB 全文检索的资料请关注我们其它相关文章!

(0)

相关推荐

  • MongoDB设计方法以及技巧示例详解

    前言 MongoDB是一种流行的数据库,可以在不受任何表格schema模式的约束下工作.数据以类似JSON的格式存储,并且可以包含不同类型的数据结构.例如,在同一集合collection 中,我们可以拥有以下两个文档document: { id: '4', name: 'Mark', age: '21', addresses : [ { street: '123 Church St', city: 'Miami', cc: 'USA' }, { street: '123 Mary Av', ci

  • express+mongoose实现对mongodb增删改查操作详解

    本文实例讲述了express+mongoose实现对mongodb增删改查操作.分享给大家供大家参考,具体如下: 项目地址:https://github.com/jrainlau/mongoose_crud 写在开头 本文主要分享我如何使用express+mongoose对mongodb实现增删改查操作,感谢cnode社区所有精品文章的帮助,以及@airuikun的开源项目airuikun/mongoose_crud对我的启发. 学习nodejs已经小半个月了,一直琢磨着做一些什么东西出来.由于

  • 使用Mongodb实现打卡签到系统的实例代码

    使用excel文件导入数据,整合mongodb实现打卡签到系统 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 主要技术:SpringBoot.Mongodb SpringBoot版本:2.2.6 实现步骤如下: 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>

  • 深入了解MongoDB 分布式集群

    在分布式应用系统中,mongodb 已经成为 NoSQL 经典数据库.要想很好的使用 mongodb,仅仅知道如何使用它是不够的.只有对其架构原理等有了充分认识,才能在实际运用中使其更好地服务于应用,遇到问题知道怎么处理,而不是抓瞎抹黑.这篇文章就带你进入 mongodb 集群的大门. 集群概览 mongodb 相关的进程分为三类: mongo 进程 – 该进程是 mongodb 提供的 shell 客户端进程,通过该客户端可以发送命令并操作集群: mongos 进程 – mongodb 的路由

  • MongoDB数据库基础操作总结

    本文实例讲述了MongoDB数据库基础操作.分享给大家供大家参考,具体如下: 1.创建数据库 >use test > db.test.insert({"name":1}) 插入之后才能查到test 2.查看数据库 >show dbs 3.删除数据库 > use test > db.dropDatabase() 4.创建集合 4.1 集合概念 集合就是一组文档,相当于多条记录. > db.title.insert({"name":&

  • 开源 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库(推荐)

    工欲善其事必先利其器,想要玩溜数据库,不妨去试试本文安利的 5 款开源的数据库管理工具.除了流行的 SQL 类数据库--MySQL.PostgreSQL 之外,文档型数据库 MongoDB.内存数据库 Redis 的管理工具也在列表之中. MongoDB 图形化的管理工具:Mongood GitHub Star 数 :222 Mongood 是一个 MongoDB 图形化的管理工具.

  • MongoDB实现基于关键词的文章检索功能(C#版)

    我的实现目标是: 可以通过一个或多个关键词搜索到文章. 可以通过文章的关键词列表查询到其相关文章. 查询到的结果依据相关程度降序排列. 查询速度要够快.(理论上关键词检索比全文检索要快很多的) 在网上找了一大圈,就没有一个靠谱的方法,基本都是只能传入单词来检索,而且基本都没有提供C#驱动版本的代码,于是乎自己研究出了这个实现方案: 首先要求使用标签.分词.关键词提取组件对文章对应的关键词进行提取,然后作为数组格式,存入文章的Keywords字段中. 核心检索代码: /// <summary>

  • JAVA代码实现MongoDB动态条件之分页查询

    一.使用QueryByExampleExecutor 1. 继承MongoRepository public interface StudentRepository extends MongoRepository<Student, String> { } 2. 代码实现 使用ExampleMatcher匹配器-----只支持字符串的模糊查询,其他类型是完全匹配 Example封装实体类和匹配器 使用QueryByExampleExecutor接口中的findAll方法 public Page&

  • win7平台快速安装、启动mongodb的方法

    本文实例讲述了win7平台快速安装.启动mongodb的方法.分享给大家供大家参考,具体如下: 写在开头 最近在学习nodejs操作mongodb的知识,但是发现每一次启动mongodb都需要敲长长的指令,一路cd到mongodb的bin目录并且写一大串东西才能启动,特别烦,而且容易出错.于是琢磨着怎么让它方便快速地启动. 由于我所使用的机器是win7系统,所以本文可能仅对win7系统有效. 下载安装 mongodb官网下载地址:https://www.mongodb.org/downloads

  • 浅析MongoDB 全文检索

    全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式. 这个过程类似于通过字典中的检索字表查字的过程. MongoDB 从 2.4 版本开始支持全文检索,目前支持15种语言的全文索引. danish dutch english finnish french german hungarian italian norwegian portuguese romanian russian spanish

  • 浅析MongoDB之安全认证

    一.MongoDB的用户和角色权限简介 为了强制开启用户访问控制(用户验证),则需要在MongoDB实例启动时使用选项--auth或在指定启动配置文件中添加auth=true. 启用访问控制:MongoDB使用的是基于角色的访问控制(Role-Based Access Control,RBAC)来管理用户对实例的访问.通过对用户授予一个或多个角色来控制用户访问数据库资源的权限和数据库操作的权限,在对用户分配角色之前,用户无法访问实例. 角色:在MongoDB中通过角色对用户授予相应数据库资源的操

  • 浅析Mongodb性能优化的相关问题

    前言 如何能让软件拥有更高的性能?我想这是一个大部分开发者都思考过的问题.性能往往决定了一个软件的质量,如果你开发的是一个互联网产品,那么你的产品性能将更加受到考验,因为你面对的是广大的互联网用户,他们可不是那么有耐心的.严重点说,页面的加载速度每增加一秒也许都会使你失去一部分用户,也就是说,加载速度和用户量是成反比的.那么用户能够接受的加载速度到底是多少呢? 如图,如果页面加载时间超过10s那么用户就会离开,如果1s–10s的话就需要有提示,但如果我们的页面没有提示的话需要多快的加载速度呢?是

  • 浅析mongodb中group分组

    group做的聚合有些复杂.先选定分组所依据的键,此后MongoDB就会将集合依据选定键值的不同分成若干组.然后可以通过聚合每一组内的文档,产生一个结果文档. 和数据库一样group常常用于统计.MongoDB的group还有很多限制,如:返回结果集不能超过16M, group操作不会处理超过10000个唯一键,好像还不能利用索引[不很确定]. Group大约需要一下几个参数. 1.key:用来分组文档的字段.和keyf两者必须有一个  2.keyf:可以接受一个javascript函数.用来动

  • 浅析MongoDB用户管理

    1. 创建一个超级用户 use admin db.createUser( { user: "adminUserName", pwd: "userPassword", roles: [ { roles: "userAdminAnyDatabase", db: "admin" } ] } ) 超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对所有数据库的访问). db是指定数

  • mongodb数据库游标的使用浅析

    mongodb中的游标使用示例如下:   假设执行如下操作: db.XXX.remove(); db.XXX.insert({"name":"BuleRiver1", "age":27}); db.XXX.insert({"name":"BuleRiver2", "age":23}); db.XXX.insert({"name":"BuleRiver3&qu

  • MongoDB入门教程之索引操作浅析

    这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅. 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵. 从算法上来说有5种经典的查找,具体的可以参见我的算法速成系列,这其中就包括我们今天所说的"索引查找",如果大家对sqlserver比较了解 的话,相信索引查找能给我们带来什么样的性能提升吧.

  • MongoDB聚合功能浅析

    MongoDB数据库功能强大!除了基本的查询功能之外,还提供了强大的聚合功能.这里简单介绍一下count.distinct和group. 1.count: --在空集合中,count返回的数量为0. > db.test.count() 0 --测试插入一个文档后count的返回值. > db.test.insert({"test":1}) > db.test.count() 1 > db.test.insert({"test":2}) >

  • SQL Server全文检索查询浅析

    方案概要: 1. 改变文件存储时的文件名 2. 配置索引服务器,并将索引服务器与MS SQL Server关联. 3. 修改SQL语句,将进行全文查询语句的内容加入查询条件中 文件的存储方式: 为了方便存储以及方便索引,我们将上传的文件存储到一个目录里面,为了保证上传的文件名不重复,采用GUID作为文件名,并且通过这个GUID于数据库记录相关联.同时,文件的后缀还保持原始文件的后缀,让索引服务能够识别该文档. 配置索引服务 进入计算机管理(Computer Management)程序(右键"我的

  • 大数据环境下mongoDB为何要加索引浅析

    前言 索引通常能够极大的提高查询的效率.在系统中使用查询时,应该考虑建立相关的索引. mongodb在存储大数据时,对查询的字段需要添加索引,我测试的是阿里云30多万的数据量,不加索引查询已经到8秒,而添加索引之后是毫秒级! 为集合加索引 mongodb支持内嵌属性添加索引 db.agencyTotal.createIndex({"occurDate ":1}); 添加唯一索引 db.agencyTotal.createIndex({"code ":1},{&quo

随机推荐