3.6.3 全文索引

在一些信息管理平台上经常需要进行信息模糊查询,最早的时候是利用了某个字段上实现的模糊查询,但这个时候返回的信息并不会很准确,因为只能够查A字段或B字段,而在MongoDB里面实现了非常简单的全文检索。

范例:定义一个新的集合

db.news.insert({"title" : "wangke", "content" : "lol"})

db.news.insert({"title" : "wangyan", "content" : "heshui"})

db.news.insert({"title" : "wangying", "content" : "cf"})

db.news.insert({"title" : "wangyanjun", "content" : "shuijiao"})

db.news.insert({"title" : "wangyan wangying", "content" : "heshui"})

范例:设置全文检索

db.news.ensureIndex({"title" : "text", "content" : "text"})

范例:实现数据的模糊查询

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

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

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

查询多个关键字(与关系):{"$search" : "\"查询关键字\" \"查询关键字\" ......"}  # \"转义字符

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

范例:查询单个内容(全文检索)

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

范例:包含有"wangke"或"wangyanjun"的信息

db.news.find({"$text" : {"$search" : "wangke wangyanjun"}})

范例: 同时包含有“wangyan wagnying”的信息

db.news.find({"$text" : {"$search" : "\"wangyan\" \"wangying\""}})

范例:包含有"wangyan","wangying"没有"wangke"的信息

db.news.find({"$text" : {"$search" : "\"wangyan\" \"wangying\" - wangke"}})

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

范例:为结果打分

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

分数越高表示越接近最完美的查询结果,打分操作可以使用户更好地区分查询准确度。

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

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

但是在这里还有一个小问题,如果一个集合的字段太多,那么每一个字段都分别设置全文检索比较麻烦,这种情况可以为所有的字段设置全文检索。

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

先将前面的索引删除:

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

这是一种最简单的设置全文索引的方式,但是尽可能别用,一个字:慢。(索引越多,操作越慢)

MongoDB(课时24 全文索引)的更多相关文章

  1. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时24&&25

    课时24 深度学习开源库使用介绍(上) Caffe 被用于重新实现AlexNet,然后用AlexNet的特征来解决其他事情 用C++书写的,可以去GitHub上面读取源代码 主要四个类: Blob可以 ...

  2. MongoDB 中文的全文索引

    MongoDB 从3.2 版本以后添加了对中文索引的支持: 官网链接:https://docs.mongodb.com/manual/reference/text-search-languages/ ...

  3. MongoDB (课时1,2)

    1.数据库之中支持的的SQL语句是由IBM开发出来的,使用并不麻烦,就是几个简单的单词:select, from, where,  group by, having, order by.目前最流行的数 ...

  4. 面向对象程序设计-C++_课时24多态的实现

    所有带virtual的类的对象,里面最上面有一个隐藏的指针vptr,指向一张表vtable #include <iostream> using namespace std; class A ...

  5. mongodb 索引,全文索引与唯一索引

    唯一索引创建: db.createIndex({name: 1}, {unique: true})

  6. MongoDB小结24 - 索引简介2

    索引的名字 集合中每个索引都有一个字符串类型的名字,来唯一标识索引. 服务器通过名字来操作或者删除索引. 要注意的是,索引名有字符个数限制,所以索引创建时一定要用自定义的名字,如 db.user.en ...

  7. MongoDB的全文索引

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

  8. Mongodb 学习笔记简介

    目录 1       准备工作... 5 1.1        相关网址... 6 1.1        下载安装... 6 1.1.1         下载:... 6 1.1.2         ...

  9. 重磅 | 阿里云与MongoDB达成战略合作,成为全球唯一提供最新版MongoDB的云厂商

    MongoDB是业界最受欢迎的开源数据库之一,2019年一份面向开发者的数据库调查报告中,MongoDB以 24.6%的使用率占据次席. 阿里云是国内最早提供MongoDB服务的云厂商,提供完全兼容M ...

随机推荐

  1. win10下的iis的配置(服务于asp.net)

    win10下的iis的配置和win7下的是类似的. 1.右键开始,打开控制面板,进入卸载程序中,勾上如下图所示的项目,即可装上iis. 这里写图片描述 2.重启后搜索iis,进入iis配置中.点击网站 ...

  2. linux eaccelerator

    wget https://github.com/eaccelerator/eaccelerator/tarball/master tar -jxvf eaccelerator-0.9.6.1.tar. ...

  3. python start

    由于工作关系,新学习使用了python,感觉能非常快速和方便的开发,看完<简明 Python 教程>就跃跃欲试,实际用的是发现有些和C#的理解不一样 (1)如何筛选元组 例如  recor ...

  4. acrobat pro 无法编辑个别文本

    在修改pdf文档时出现个别文字选取不上,无法修改,如图中4-2626没有选中 解决方法如图 此后可以直接修改文本了

  5. SV中的OOP

    OOP:Object-Oriented Programming,有两点个人认为适合验证环境的搭建:1)Property(变量)和Method(function/task)的封装,其实是BFM模型更方便 ...

  6. zw版【转发·台湾nvp系列Delphi例程】HALCON max_connection

    zw版[转发·台湾nvp系列Delphi例程]HALCON max_connection procedure TForm1.Button1Click(Sender: TObject);var ho_I ...

  7. linux常用命令:grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  8. C/C++之宏、内联函数和普通函数的区别

    内联函数的执行过程与带参数宏定义很相似,但参数的处理不同.带参数的宏定义并不对参数进行运算,而是直接替换:内联函数首先是函数,这就意味着函数的很多性质都适用于内联函数,即内联函数先把参数表达式进行运算 ...

  9. python+requests接口自动化测试

    转自https://my.oschina.net/u/3041656/blog/820023 原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测 ...

  10. Python3 itchat微信获取好友、公众号、群聊的基础信息

    Python3 itchat微信获取好友.公众号.群聊的基础信息 一.简介 安装 itchat pip install itchat 使用个人微信的过程当中主要有三种账号需要获取,分别为: 好友 公众 ...