位置: 编程技术 - 正文

Mongodb实战之全文搜索功能(mongodb4)

编辑:rootadmin

推荐整理分享Mongodb实战之全文搜索功能(mongodb4),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb从入门到商业实战,mongodb bi,mongodb快速入门,mongodb从入门到商业实战,mongodb快速入门,mongodb bi,mongodb最佳实践,mongodb 实战,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

众所周知在传统的关系型数据库中,我们通常将数据结构化,通过一系列表关联、聚合来查询我们所需的结果。而在非结构化的数据中,缺少这种预定义的结构,因而如何快速查询定位到我们所需要的结果,不是一件容易的事。

Mongodb作为一种NoSQL数据库,非常适合存储和管理非结构化数据,例如互联网上的各种文本数据。假如我们用Mongodb存储了很多博客文章,那么如何快速找到所有关于“nodejs”这个主题的文章呢?Mongodb内建的全文搜索可以帮助我们完成这个功能。下面话不多说了,来一起看看详细的介绍:

在本篇博文中,将要介绍的是我使用Mongdb text search的一些经验。

Mongodb text search是什么?

Mongodb text search是Mongodb对数据库进行搜索的功能模块,类似于数据库内建的搜索引擎。有些人可能会疑问,查数据库为什么还需要搜索引擎?直接用条件查询不就得了。例如在前面的文章主题搜索中,我们不可能事先提取出每篇文章的主题,然后用专门的字段存储,因此没办法进行条件查询。并且同一个主题词,有多种不同的表达方式,例如”node”、”nodejs”可视为同一个主题。

Mongodb text search可以自动地对大段的文本数据进行分词处理、模糊匹配、同义词匹配,解决文本搜索的问题。

建立文本索引

要使Mongodb能够进行全文搜索,首先要对搜索的字段建立文本索引。建立文本索引的关键字是text,我们既可以建立单个字段的文本索引,也可以建立包含多个字段的复合文本索引。需要注意的是,每个collection只能建立一个文本索引,且只能对String或String数组的字段建立文本索引。

我们可以通过以下命令,建立一个文本索引:

Mongodb实战之全文搜索功能(mongodb4)

在mongoose中我们可以通过以下代码,创建文本索引:

需要注意的是:由于每个collection只支持一个文本索引,所以当你需要在schema中添加或删除文本索引字段时,往往不起作用。这时候你需要到数据库中,手动删除已经建立的文本索引。

文本搜索示例

文本搜索的语法为:

在mongoose中,我们可以通过以下语句进行文本搜索:

$search后面的关键词可以有多个,关键词之间的分隔符可以是多种字符,例如空格、下划线、逗号、加号等,但不能是-和",因为这两个符号会有其他用途。搜索的多个关键字是or的关系,除非你的关键字包含-。例如hello world会包含所有匹配hello或world的文本,而hello -world只会匹配包含hello且不包含world的文本。

$language指示搜索的语言类型,在最新的Mongodb 3.2 enterprise版本中,已经增加了对中文文本的搜索。

$caseSensitive设置是否区分大小写。

$diacriticSensitive设置是否区别发音符号,CAFÉ于Café是同一语义,只是重音不一样。

我们还可以对搜索的结果按匹配度进行排序:

注意事项

Mongodb建立文本索引时,会对提取所有文本的关键字建立索引,因而会造成一定的性能问题。所以对于结构化的字段,建议用普通的关系查询,如果需要对大段的文本进行搜索,才考虑用全文搜索。

总结

标签: mongodb4

本文链接地址:https://www.jiuchutong.com/biancheng/312664.html 转载请保留说明!

上一篇:mac下安装和配置mongodb的步骤详解(mac安装步骤)

下一篇:Mongo复制集同步验证的实例详解(mongodb怎么复制粘贴)

  • 红利税是什么时候扣的
  • 公司从业人员包括老板吗
  • 医药行业发票税率
  • 货品调拨的意义
  • 企业里面不征税的发票能报销吗
  • 购买信息技术服务费摘要怎么写
  • 小微企业附加税税收优惠政策
  • 出差车费报销申请怎么写
  • 销售货物没有开票如何处理
  • 捐赠支出和赞助支出的区别
  • 企业收到投资者以外币投入的资本应当采用什么折算
  • 用于展览的存货如何做会计处理?
  • 地税收的其他政府基金计入科目及收益
  • 职工报销差旅费会计科目
  • 本月不抵扣的发票不入帐吗
  • 未开票收入必须全部转开票收入吗为什么
  • 小规模增值税免税额
  • win11怎么设置桌面显示我的电脑
  • 苹果电脑删除win系统文件
  • 购入电脑一次性扣除
  • PHP:oci_set_action()的用法_Oracle函数
  • thinkphp limit
  • 特殊收入扣减异常怎么解释
  • 其他应付款在现金流量表怎么填
  • 递延所得税资产是什么意思
  • windows未能正常启动
  • chat gpt介绍开头
  • php调用图片
  • 高新技术企业研发费用占比要求
  • html该怎么学
  • php面向对象是什么意思
  • GPT3.5 , InstructGPT和ChatGPT的关系
  • Swagger-的使用(详细教程)
  • Node.js——http模块和导出共享
  • PHP 实现等比压缩图片尺寸和大小实例代码
  • python可以制作软件吗
  • 销售返利的会计处理方法
  • 技术服务增值税申报表怎么填
  • 企业年度汇算清缴申报表填写
  • ca证书在线延期不成功
  • 织梦网站怎么添加关键词
  • 小规模纳税人1%税率优惠政策
  • 差旅费跨年报销违反什么规定
  • 企业公司怎么申请
  • 劳务派遣人员代招聘多少钱一个人
  • 借贷记账法的记账依据是什么
  • 结转制造费用用红字还是蓝字写
  • 预付一年的房租怎么做账
  • 土地增值税预缴计算方法70号公告
  • 电子行程单如何下载
  • 银行存款的收付应严格执行()的规定
  • 注册资金未缴齐怎么处理
  • 结转费用时财务费用为负
  • 基本生产成本和生产成本
  • 执行企业会计准则的非上市企业
  • 待摊费用和预提费用的区别
  • mysql中增删改查语句
  • navicate创建存储过程
  • win8系统中断怎么解决
  • 联想笔记本在bios关闭触摸板
  • 新疆喀什地区身份证号码开头
  • ubuntu系统怎么更新
  • 手把手教您安装软件
  • mac如何打开程序菜单
  • win8应用商店无法连接网络
  • win10系统谷歌浏览器为什么打不开
  • bat for do
  • pycharm官方教程
  • sqlserver 服务器
  • angular scope
  • html5 jquery
  • python怎么编函数
  • shape form的区别
  • 税务人员服务态度恶劣怎么办
  • 社保申报每月几号申报
  • 留抵税额退税政策2022
  • 江苏省税务局电话咨询热线
  • 增值税发票清单怎么打印出来
  • 广州地税网上服务大厅地址
  • 退回多扣的个人所得税会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设