MongoDB之文本搜索

简介

文本搜索的作用,如果你是java工程师,那么应该知道apache全文搜索引擎Lucene框架以及Solr和Elastiscearch全文搜索引擎技术。MongoDB提供了类似的搜索功能,就是文本搜索。

MongoDB支持的细节

  1. 定义文本搜索需要的索引
  2. 在基本查询和聚合框架中使用文本搜索

文本类型索引

注意:

  1. 一个集合可以有任意多个普通的索引,但是文本索引只能有一个,但是它可以为任意多个字段创建索引。
  2. 索引名称问题,MongoDB的索引名称最长空间为123字节,如果创建的文本所有字段太多,为了避免长度问题,可以指定索引的名称。

普通的索引创建的时候,key:value值只可以选择1或者-1表示索引的排序方向。创建文本搜索索引值为text。表示文本类型索引。

文本搜索查询的时候,使用$text。

如图,给对于的索引字段指定权重,搜索的时候匹配的几率就会增大,如果不指定默认为1。另外为了避免索引的名称超出123字节,所有自定义了名称。

基本的文本搜索

$text定义查询为文本搜索。¥search参数定义搜索使用的字符串。这里不需要指定是那个字段,因为会在所有文本字段索引中查询包含actions的值的文档都会查询出来,第二个参数title:1表示只要返回title字段即可。

以上查询返回的结果如下:

如果使用以下的查询条件,返回的结果也是一样的:

至于为什么会返回一样的结果。因为传递MongoDB in Action的时候,MongoDB由于使用的是$text文本索引查询,会将该条件分解为MongoDB和Action,只要包含这2个信息就会返回。不好意思,由于MongoDB目前不支持自定义分词,所以中文会显得比较尴尬一些。目前Solr这些框架是支持自定义分词的。

复杂的文本搜索

单个指定的值必须要出现,怎么写查询条件呢?使用双引号括起来的信息必须出现。

多个指定指定的值必须都出现,怎么写查询条件呢?一样。Mongodb和second edition都必须出现。类似and查询条件。Mongodb不会区分大小写。

更复杂的搜索条件

如果有的信息使用文本搜索索引查询,查询到后还有其它查询条件,如何处理呢?和普通查询一样。

在使用了$text文本搜索后,还增加了status必须是MEAP的查询条件。

文本搜索分数

文本搜索分数有什么用?可以表示匹配程度,分数越高,表示匹配程度越高。可以根据分数排序显示,把分数高的排前面。

利用权重影响查询结果

前面介绍创建文本搜索索引的时候,使用到了weights权重,给对于的字段设置权重,那么查询到该字段后的结果分值将乘以对应的权重,提示分数值。

关注微信公众号(程序员小兔)不定期分享技术

MongoDB之文本搜索相关推荐

  1. Linux之文本搜索命令 grep

    Linux之文本搜索命令 1. grep命令的使用 命令 说明 grep 文本搜索 grep命令效果图: [使用单引号和双引号效果是一样的] 2. grep命令选项的使用 命令选项 说明 -i 忽略大 ...

  2. Linux文本搜索工具grep

    简介 grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文件内容,并把域值所匹配的行打印出来 grep命令语法结构 grep [options] '要搜索的字符串' filename gre ...

  3. Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式...

    本章Blog相关Linux知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户 ...

  4. linux如何查看归档文件,linux基本命令:文本搜索,拷贝文件,移动文件,归档管理,压缩解压缩文件,查看命令位置...

    1.文本搜索:grep grep查找的是文件内容中的文本,字符需要用引号括起来,单引双引都可以 格式:grep [-选项] '内容' 文件名 例如: -v显示不包含匹配文本的所有行(相当于求反) -n ...

  5. 数据库9:联结表 高级联结 组合查询 全文本搜索

    第十五章联结表 Sql最强大的功能之一就是能在数据检索查询的执行中联结(join)表.联结是利用sql的select能执行的最重要的操作,能很好的理解联结及其语法是学习sql的一个极为重要的组成部分. ...

  6. MySQL(十)操纵表及全文本搜索

    一.创建表 MySQL不仅用于表数据操作,还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 创建表一般有如下两种方式: ①使用具有交互式创建和管理表的工具: ②直接使用MySQL语句操纵表 ...

  7. grep 两个字符串_文本搜索神器Grep

    假设有一个文件(或一堆文件),并且想要在这些文件中搜索特定的字符串或配置关键字.Windows下,你可能会打开这些文件用搜索框(CTRL+F)输入关键字点搜索,这很麻烦而且还不能随心所欲的搜.在Lin ...

  8. MySQL数据检索+查询+全文本搜索

    [0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL数据检索+查询+全文本搜索" 的基础知识: [1]使用子查 ...

  9. php grepmatch,linux最快的文本搜索神器ripgrep(grep的最好代替者)

    前言 说到文本搜索工具,大家一定会知道 grep, 它是 linux 最有用并最常用的工具之一. 但如果要再一个大的工程项目中搜索某个关键词,大家也一定知道它比较耗时. 所以就有了很多替代工具,之前最 ...

最新文章

  1. EXTJS实现的WEBQQ可以传文件了哈
  2. Cisco easy *** basic ASA
  3. Qt Creator设置Conan
  4. java sqlexec_java 执行Sql文件
  5. 个人用户升级鸿蒙,老用户等到了!鸿蒙升级标准确定,“三岁”以下机型全更新...
  6. libtool: Version mismatch error
  7. TCP/IP 协议大致的概念
  8. 基于Jersey框架创建web项目
  9. 综合评价法——秩和比(RSR)
  10. 论文笔记 -- ISSCC-2020: GANPU (Multi-DNN Processor for GANs with Speculative Dual-Sparsity Exploitation)
  11. 微弱信号放大电路(电磁超声)
  12. 进击的UI-----------------UITableView(表视图)
  13. 新浪微博开发平台地址 http://open.weibo.com/
  14. iOS 新特性实现 3DTouch 开发
  15. java 工作流 jbpm,J2EE工作流管理系统jBPM详解(一)(4)
  16. 四种常见的 POST 提交数据方式 专题
  17. exe文件解析_PE文件格式之重定位表
  18. Linux操作系统正则表达式
  19. 苹果变心,这家公司没了360亿
  20. php进程 异常退出,记一次进程异常退出的问题排查

热门文章

  1. AR路由器web界面每IP限速配置方法
  2. 2019牛客暑期多校训练营(第一场)E.ABBA
  3. 【C51】基于C51单片机的定时闹钟(含代码,电路,拿走即可用)
  4. 做自适应网站专业乐云seo_自适应网站软件专注乐云seo
  5. 资本寒冬,经济下行,中小企业如何“御寒”
  6. Android中微信抢红包助手的实现
  7. esxi5 的tart命令使用注意点
  8. 无胁科技-TVD每日漏洞情报-2022-11-29
  9. dplayer解析源码php调用,从demo分析ijk源码一:视频播放
  10. 定期存款可以提前取出来吗_定期存款可以提前取吗 定期存款没到期怎么取出来?...