①全文索引

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

创建全文索引,建议在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

    首先上一个html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  2. EasyUI Dialog 对话框默认不弹出和关闭清空对话框内容

    EasyUI中文网: http://www.jeasyui.net/plugins/181.html 默认不弹出:closed:true 模式化窗口(有遮罩):modal:true <div c ...

  3. ScrollView嵌套ListView,禁止ListView的滚动,只让ScrollView可以滚动

    自定义ListView,xml布局文件中使用该自定义的ListView public class NoScrollListview extends ListView{ public NoScrollL ...

  4. js学习(初)

    一种弱数据类型语言  var 基础: 处理字符串的函数 数组基础操作 流程控制语句 选择,分支 循环for for in for(索引变量 in  对象){ 语句块 } 面向对象: js语言的对象就是 ...

  5. PHP统计网站pv(访问量)

    //首先判断有没有统计的文件 if(is_file("pv.txt")){//有 //取文件里面的值 $count=file_get_contents("pv.txt&q ...

  6. idea工程中web.xml报错Servlet should have a mapping

    搭建ssm工程过程中web.xml报错:Servlet should have a mapping ....但是mapping已经配置好了...如下图: 搜索无果,后来发现是工程的web.xml位置配 ...

  7. 迭代器、生成器 day13

    一 迭代器 迭代器的由来pythone2.2引进的,是一种序列(也是一种数据类型),也是为类对象提供一个序列的入口. for 循环str list tuple dict set 文件句柄可迭代: s ...

  8. ssm介绍

    1.Spring     Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE ...

  9. 如何判断来访的IP是否是百度蜘蛛ip?

    网站日志是可以真实体现网站的状态,通过网站日志我们可以清楚的看到网站每天有多少访客,每天有多少蜘蛛来抓取网站的数据,哪些数据被蜘蛛抓取了.哪些页面在请求数据的时候发现了错误.这些都是可以通过状态码来进 ...

  10. python提取分析表格数据

    #/bin/python3.4# -*- coding: utf-8 -*- import xlrd def open_excel(file="file.xls"): try: d ...