美文网首页
MongoDB使用全文检索

MongoDB使用全文检索

作者: AC编程 | 来源:发表于2022-02-22 18:38 被阅读0次

一、前言

我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,而MongoDB的全文检索则可以弥补这个缺陷。

二、全文检索

全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。MongoDB 从 2.4 版本开始支持全文检索,目前支持15种语言的全文索引。

2.1 启用全文检索

MongoDB 在 2.6 版本以后是默认开启全文检索的,如果你使用之前的版本,你需要使用以下代码来启用全文检索:

>db.adminCommand({setParameter:true,textSearchEnabled:true})

或者使用命令:

mongod --setParameter textSearchEnabled=true
2.2 创建全文索引

考虑以下 posts 集合的文档数据,包含了文章内容(post_text)及标签(tags):

{
   "post_text": "enjoy the mongodb articles on Runoob",
   "tags": [
      "mongodb",
      "runoob"
   ]
}

我们可以对 post_text 字段建立全文索引,这样我们可以搜索文章内的内容:

>db.posts.ensureIndex({post_text:"text"})
2.3 使用全文索引

现在我们已经对 post_text 建立了全文索引,我们可以搜索文章中的关键词 runoob:

>db.posts.find({$text:{$search:"runoob"}})
2.4 性能

全文索引和正则表达式都可以实现模糊搜索,但全文索引性能更高,因为用正则表达式的方式不会走索引,是全表扫描。

三、全文索引使用限制

全文索引非常强大,但是同样存在很多限制。

  • 每次查询,只能指定一个$text查询。

  • $text查询不能出现在$nor查询中。$nor查询是用来排除某些查询,排除某些条件。

  • 查询中如果包含了$text,hint不再起作用。hint可以强制指定索引,在查询的时候,一般不不要告诉MongoDB选取哪个索引,MongoDB会自动选区,但是某些情况下,我们可以测试下我们的索引性能,需要手工进行操作,如果查询中包含了$text,就不能使用hint

相关文章

  • MongoDB使用全文检索

    一、前言 我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,而Mon...

  • 利用mongo-connector将mongodb中数据同步到e

    因为项目中需要对mongodb中数据实现全文检索的功能,但mongodb的全文检索不支持英文。而 elastics...

  • django中的全文检索

    全文检索 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 haystack...

  • Django 2.1.7 全文检索

    全文检索 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。 haystac...

  • 检索

    全文检索 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。 haystac...

  • Django全文检索

    全文检索 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理' 安装 pip ...

  • 搜索引擎--全文检索

    全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。 haystack:全文检...

  • 看完这篇Elasticsearch还不会,你打我

    一、走进Elasticsearch 1.1 全文检索 1.1.1 为什么要使用全文检索 用户访问我们的首页,一般都...

  • PostgreSQL全文检索使用

    1. Psql 安装 (CentOS-7.x) 采用yum安装psql是最简洁高效的 安装完成之后,我们可能需要配...

  • php + MongoDB + Sphinx 实现全文检索

    现状: Sphinx 目前的稳定版本为 2.2.11.Sphinx 目前对英文等字母语言采用空格分词,故其对中文分...

网友评论

      本文标题:MongoDB使用全文检索

      本文链接:https://www.haomeiwen.com/subject/lfoglrtx.html