MongoDB(课时24 全文索引)
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 全文索引)的更多相关文章
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时24&&25
课时24 深度学习开源库使用介绍(上) Caffe 被用于重新实现AlexNet,然后用AlexNet的特征来解决其他事情 用C++书写的,可以去GitHub上面读取源代码 主要四个类: Blob可以 ...
- MongoDB 中文的全文索引
MongoDB 从3.2 版本以后添加了对中文索引的支持: 官网链接:https://docs.mongodb.com/manual/reference/text-search-languages/ ...
- MongoDB (课时1,2)
1.数据库之中支持的的SQL语句是由IBM开发出来的,使用并不麻烦,就是几个简单的单词:select, from, where, group by, having, order by.目前最流行的数 ...
- 面向对象程序设计-C++_课时24多态的实现
所有带virtual的类的对象,里面最上面有一个隐藏的指针vptr,指向一张表vtable #include <iostream> using namespace std; class A ...
- mongodb 索引,全文索引与唯一索引
唯一索引创建: db.createIndex({name: 1}, {unique: true})
- MongoDB小结24 - 索引简介2
索引的名字 集合中每个索引都有一个字符串类型的名字,来唯一标识索引. 服务器通过名字来操作或者删除索引. 要注意的是,索引名有字符个数限制,所以索引创建时一定要用自定义的名字,如 db.user.en ...
- MongoDB的全文索引
Table of Contents 背景 如何使用 准备工作:插入数据 建立全局索引 查询结果 使用中存在哪些问题? 英文存在停止词 中文无法采用全文索引 前面了解了多种索引方式,比如单键索引,多 ...
- Mongodb 学习笔记简介
目录 1 准备工作... 5 1.1 相关网址... 6 1.1 下载安装... 6 1.1.1 下载:... 6 1.1.2 ...
- 重磅 | 阿里云与MongoDB达成战略合作,成为全球唯一提供最新版MongoDB的云厂商
MongoDB是业界最受欢迎的开源数据库之一,2019年一份面向开发者的数据库调查报告中,MongoDB以 24.6%的使用率占据次席. 阿里云是国内最早提供MongoDB服务的云厂商,提供完全兼容M ...
随机推荐
- 源代码下载 作者:王先荣(Xianrong Wang)
作者:王先荣(Xianrong Wang) 下面是我的一些源代码: 1. 图像处理学习系列源代码——包括该系列文章的几乎所有代码: 1.5. 图像处理学习系列中用到的dll文件包——将这个解压缩之后放 ...
- 机器学习理论基础学习9--- EM 算法
EM算法的适用场景: EM算法用于估计含有隐变量的概率模型参数的极大似然估计,或者极大后验概率估计. 当概率模型既含有观测值,又含有隐变量或潜在变量时,就可以使用EM算法来求解概率模型的参数. 当概率 ...
- http协议基础(二)请求和响应报文的构成
http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON ConvolImage
zw版[转发·台湾nvp系列Delphi例程]HALCON ConvolImage procedure TForm1.Button1Click(Sender: TObject);begin img.D ...
- pandas练习(四)--- 应用Apply函数
探索学生对酒的消费情况 数据见github 步骤1 - 导入必要的库 import pandas as pd import numpy as np 步骤2 - 数据集 path4 = "./ ...
- Python: 序列: 过滤序列元素
问题: 你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列 answer: eg1:列表推导 最简单的过滤序列元素的方法就是使用列表推导.比如:>>> mylist = ...
- 让前端独立于后端进行开发,模拟数据生成器Mock.js
让前端独立于后端进行开发,模拟数据生成器Mock.jsMock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试. Home · nuysoft/Mock Wiki ...
- 在IBM学到的东西,到底对我的程序生涯产生了多大的影响
我和很多人交流过一个有趣的现象,那就是刚毕业到30岁这段时间,会觉得时间过得很慢,总觉得自己还很年轻,但是一旦过了30岁,时间就如白驹过隙,一年又一年飞逝而过. 我自己也是,眼瞅着毕业快15年了,15 ...
- 如何在 Linux 中将文件编码转换为 UTF-8
一个文件:vim 文件名.txt输入 :e ++enc=gbk 强制用gbk打开输入 :w ++enc=utf8 转换到utf8保存. 多个文件:for i in *.txt; do iconv -f ...
- 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件
要安装kubernetes最新版集群,https://github.com/opsnull/follow-me-install-kubernetes-cluster 这个文档必须要研习一下了. 以下实 ...