①全文索引

全文索引是用于对长文本检索来使用的,是用正则表达式只能对字符串类型的值进行检索。注意:创建索引是一件比较耗时耗费资源的事情,而全文索引更是耗时更厉害,如果对索引键的内容比较长,需要对内容进行分词,会出现更严重的性能问题。

创建全文索引,建议在mongodb不忙的时候创建,mongodb的分词现在好像不支持中文,如果是对内容比较小的比如小于100个汉字的可以试用一下mongodb的全文索引,如果是对一篇很长的文章使用全文索引这是非常不合适的,这会把mongodb累死的,对于内容比较多可以采取其他技术如Lucenne、Solr、ElasticSearch等技术

范例:定义一个新的集合

db.news.insert({"title":"m1 m2 m3 m4 m5","content":"m5");

db.news.insert({"title":"m1 m2 m3 m4","content":"m3");

db.news.insert({"title":"m5","content":"m6");

db.news.insert({"title":"m5","content":"m5");

db.news.insert({"title":"m6","content":"m5");

范例:设置全文检索
db.news.ensureIndex({"title":"text"},{"content":"text"});
④范例:实现数据的模糊查询

如果要想表示出全文检索,则使用“$text”判断符,而要想进行数据的查询则使用“$search”运算符:

|- 查询指定关键字:{"$search" : "查询关键字"};

|- 查询多个关键字(或关系):{"$search" : "查询关键字查询关键字 ..."};

|- 查询多个关键字(与关系):{"$search" : "\"查询关键字\" \"查询关键字\"..."}

|- 查询多个关键字(排除某一个):{"$search" : "查询关键字查询关键字 ... -排除关键字"}

范例:查询单个内容

db.news.find({"text":{"$search":"m5"}});

范例:包含有“m5”与“m4”的信息

db.news.find({"text":{"$search":"m5 m4"}});

范例:同时包含有“ m5”与“ m4”的内容

db.news.find({"text":{"$search":""m5" "m4""}});

范例:包含有“m5 m4”但是没有“ m3”的内容

db.news.find({"text":{"$search":""m5" "m4" -m3"}});

但是在进行全文检索操作的时候还可以使用相似度的打分来判断检索成果。

⑤范例:为结果打分

db.news.find({"text":{"$search":"m5"},{"score":{"$meta":"textScore"}}});

db.news.find({"text":{"$search":"m5"},{"score":{"$meta":"textScore"}}}).sort({"score":{"$meta":"textScore"}});

按照打分的成绩进行排列,实际上就可以实现更加准确的信息搜索。

⑥范例:为所有字段设置全文检索

db.news.ensureIndex({"$**":"text"});

这是一种最简单的设置全文索引的方式,但是尽可能别名,一个字:慢。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

第29章:MongoDB-索引--全文索引的更多相关文章

  1. mongodb索引 全文索引之相似度查询

    我们在百度搜索中,可以看到与自己搜索度内容越相关度,排在越前面,这个需求可以在mongodb中很简单度实现,mongodb的全文索引不仅可以返回相匹配的查询结果,而且可以告诉你查询结果与你的查询条件多 ...

  2. mongodb索引 全文索引使用限制

    全文索引非常强大,但是同样存在很多限制,我们来看以下去全文索引的使用限制: 1.每次查询,只能指定一个$text查询 2.$text查询不能出现在$nor查询中 之前没有接触过$nor查询,$nor查 ...

  3. mongodb索引 全文索引

    全文索引,也叫文本索引,平时,我们百度的搜索,比如api文档的搜索,这种全局的索引就可以使用全文索引实现 全文索引:对字符串与字符串数组创建全文可搜索对索引 使用情况:比如有一个数据集合,存储了用户的 ...

  4. 【四】MongoDB索引管理

    一.索引介绍 在mongodb中,索引用来支持高效查询.如果没有索引,mongodb必须在整个集合中扫描每个文档来查找匹配的文档.但是如果建立合适的索引,mongodb就可以通过索引来限制检查的文档数 ...

  5. MongoDB索引介绍

    MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...

  6. MongoDB索引的种类与使用

    一:索引的种类 1:_id索引:是绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段2:单键索引: 1.单键索引是最普通的索引 2.与_id索引不同,单键索 ...

  7. 学习MongoDB 八: MongoDB索引(索引限制条件)(二)

    一.简介 我们上一篇介绍了索引基本操作,通过db.collection.createIndex(keys, options)语法创建索引,我们继续介绍地理空间索引.索引的限制,使我们在MongoDB时 ...

  8. MongoDB的全文索引

    ​ Table of Contents 背景 如何使用 准备工作:插入数据 建立全局索引 查询结果 使用中存在哪些问题? 英文存在停止词 中文无法采用全文索引 前面了解了多种索引方式,比如单键索引,多 ...

  9. MongoDB索引的简单理解

    目录 MongoDB索引 1.语法准备 2.数据准备: 3.索引 3.1 唯一索引 3.2 单键索引 3.3 多键索引 3.4 复合索引 3.5 交叉索引 3.6 部分索引 3.7覆盖索引 3.8 全 ...

随机推荐

  1. Django xadmin 根据登录用户过滤数据

    在adminx.py文件对应的的class中添加如下代码: def queryset(self): qs = super(taskAdmin, self).queryset() if self.req ...

  2. IQKeyboardManager

    enable控制整个功能是否启用. shouldResignOnTouchOutside控制点击背景是否收起键盘. shouldToolbarUsesTextFieldTintColor 控制键盘上的 ...

  3. jQuery 向另一个页面传参,同时跳转到该页面

    为了使参数能够传递到另外一个页面,使用ajax的跳转方式 $.ajax({ type: "POST", url:"/admin/sysjgl/sysjck/sjcs&qu ...

  4. sqlserver的数据库状态——脱机与联机

    1.数据库状态: online:可以对数据库进行访问 offline:数据库无法访问 2.查看数据库状态的方法: (1)使用查询语句: SELECT state_desc FROM SYS.datab ...

  5. mysql-mysqldump命令导出多个数据库结构(实战)

    环境:windows server 2012 打开CMD命令行模式, >cd c:\Program Files\Mysql\Mysql 5.7.1\bin c:\Program Files\My ...

  6. JAVA课堂练习-动手动脑--数组

    1.阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: public class PassArray { public stat ...

  7. 循环&信息添加&颜色修改

            #import "AViewController.h" @interface AViewController () <UIActionSheetDelegat ...

  8. 转载(windows下安装mysql)

    转载请声明出处:http://blog.csdn.net/u013067166/article/details/49951577             最近重装了系统,去MySQL官网下载了最新的M ...

  9. 利用gulp搭建less编译环境

       什么是less? 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, ...

  10. Numpy 学习 array np.where lexsort 切片 按行按列求平均mean

    array 的创建可以通过list给 array print出来像一个表格,可以按行按列来观察. 原来是一个list相当于一行 np.where用于寻找一个condition下的坐标,返回的是一个2个 ...