• 主页
  • 归档
  • 分类
  • 照片墙
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 分类
  • 照片墙
  1. 1. 创建全文索引
  2. 2. 使用全文索引进行查询
  3. 3. 相似度查询

3.1、全文索引

2017-12-16 18:53:10
总字数 707
预计阅读时间 2 分钟

全文索引是目前搜索引擎的关键技术
对于在大量的大文本当中搜索一个关键词
如果没有全文索引 , 只能是使用正则匹配进行遍历
效率十分低下

所以在这样的矛盾之下出现了全文索引技术 , 也称为倒排文档技术

无论是对于庞大的互联网数据的爬取还是应用的站内搜索功能 , 全文索引都是能极大提高性能的一种技术

在mongoDB当中 , 全文索引是对字符串或字符串数组来创建全文索引

创建全文索引

1
db.集合名称.ensureIndex({key_1:"text"...) 

与普通的单键索引或者符合索引有区别的是
json当中的值是一个 固定字符串”text” , 而不是整数
上述写法是对某个或者某几个字段创建全文索引
但是取决于mongoDB存储数据的特点
每个集合当中的数据可以有完全不同的结构
所以通常用如下得到方式对该集合当中所有的字符串或字符串数组字段添加全文索引

1
db.集合名称.ensureIndex({"$**":"text"})

每个集合当中只能创建一个全文索引

使用全文索引进行查询

  • find({$text:{$search:"aa"}}) - 普通单关键字匹配
  • find({$text:{$search:"aa bb"}}) - 多关键字匹配 ( 不同关键字之间是或的逻辑关系 )
  • find({$text:{$search:"\"aa\" \"bb\""}}) - 多关键字匹配 ( 不同关键字之间是与的逻辑关系 )
  • find({$text:{$search:"aa bb -cc"}}) - 添加屏蔽的关键字

注意 : 上述的全文索引的搜索方式是根据英文单词进行匹配的 , 也就是按照空白( 包括空格 换行 制表符等 )分割的字符串 , 如果关键词是单词的一部分 , 或者是中文内容 , 这种方式就无法检索到需要的数据

相似度查询

$meta操作符 { score : {$meta : “textScore”} }
( 注意textScore是固定的操作符标识 , 代表相似度值 )
写在查询条件后面可以返回结果的相似度

例如 在一个添加了全文索引的集合当中有下列数据
full text search

执行下面的查询

1
db.集合名称.find({$text:{$search:"aa"}},{score:{$meta:"textScore"}}) 

结果如下
full text search

目前新版的mongoDB执行全文索引的查询后的结果默认就是按照相似度降序排列的

添加全文索引会导致集合的写入性能下降 , 因为所有的字符串都要拆分 , 存储到不同的地方

  • 数据库
  • MongoDB
  • 索引
  • MongoDB

扫一扫,分享到微信

3.2、地理位置索引
3.0、索引 
© 2024 夏夜梦星辰
鲁ICP备19028444号
Power By Hexo
  • 所有文章
  • 友情链接
  • 关于我
{{searchItem.query}}
标签: 分类:
  • maven
  • 持续集成
  • JMS
  • 线程
  • JavaScript
  • ECMAScript6
  • 单元测试
  • Promise
  • Web Worker
  • 函数
  • prototype
  • 模块化
  • 正则表达式
  • 数据库
  • MongoDB
  • 索引
  • 集群
  • 全文检索
  • flutter
  • dart
  • git
  • 版本控制
  • linux
  • shell
  • docker
  • nginx
  • jenkins
  • opencv
  • vim
  • react
  • react native
  • 前端
  • css
  • HTML5
  • Hexo
  • sass
  • Three.js
  • TypeScript
  • Vue
  • 组件化
  • base64
  • webpack
  • nodejs
  • gulp
  • TensorFlow
  • 机器学习
  • 算法
  • 动态规划
  • 数据结构
  • Java
  • JavaScript
  • MongoDB
  • flutter
  • Git
  • linux
  • react
  • 前端杂烩
  • 男生女生
  • 算法
  • 十年饮冰,难凉热血
  • †少女癌†
  • 猫与向日葵
  • coderfun
  • JENKINS
  • API管理后台
愿你最终能接纳每一面每一种的自己
独自活着便是团圆