返回介绍

全文索引

发布于 2024-12-09 12:55:35 字数 2423 浏览 0 评论 0 收藏 0

准备数据:

db.info.insert({contextInfo:"I am a student. I love learning. I am good at playing basketball and football. I love my family, I love my parents."})
db.info.insert({contextInfo:"I am a research and development engineer. I love working and studying. I love my family, I love my parents."})

建立全文索引

db.info.ensureIndex({contextInfo:'text'})

需要注意的是:这里使用 text 关键词来代表全文索引,就不建立数据模型了。

全文索引查找

建立好了全文索引,就可以查找了,查找时需要两个关键修饰符:

  • $text:表示要在全文索引中查东西
  • $search:后边跟查找的内容
> db.info.find({$text:{$search:"student"}})
{ "_id" : ObjectId("5cbb3105466a2bd461ae0f42"), "contextInfo" : "I am a student. I love learning. I am good at playing basketball and football. I love my family, I love my parents." }

查找多个词

全文索引支持多个词语查找,比如我们希望查找数据中有 student engineer learning 的数据(这是或的关系),所以两条数据都会出现。

> db.info.find({$text:{$search:"student engineer learning"}})
{ "_id" : ObjectId("5cbb3107466a2bd461ae0f43"), "contextInfo" : "I am a research and development engineer. I love working and studying. I love my family, I love my parents." }
{ "_id" : ObjectId("5cbb3105466a2bd461ae0f42"), "contextInfo" : "I am a student. I love learning. I am good at playing basketball and football. I love my family, I love my parents." }

如果我们这时候希望不查找出来有 learning 这个单词的记录,我们可以使用 - 减号来取消。

db.info.find({$text:{$search:"student engineer -learning"}})

转义符:全文索引中是支持转义符的,比如我们想搜索的是两个词(love learning 和 development),这时候需要使用 \ 斜杠来转义。

> db.info.find({$text:{$search:"\'love learning\' development"}})
{ "_id" : ObjectId("5cbb3107466a2bd461ae0f43"), "contextInfo" : "I am a research and development engineer. I love working and studying. I love my family, I love my parents." }
{ "_id" : ObjectId("5cbb3105466a2bd461ae0f42"), "contextInfo" : "I am a student. I love learning. I am good at playing basketball and football. I love my family, I love my parents." }

总结:全文索引在工作还是经常使用的,比如博客文章的搜索,长文件的关键词搜索,这些都需要使用全文索引来进行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文