当前位置: 首页 > news >正文

MongoDB CRUD操作: 在本地实例进行文本搜索查询

MongoDB CRUD操作: 在本地实例进行文本搜索查询

文章目录

  • MongoDB CRUD操作: 在本地实例进行文本搜索查询
    • 举例
      • 创建集合
      • 创建文本索引
      • 精准搜索
      • 排除短语
      • 结果排序

在本地实例运行文本搜索查询前,必须先在集合上建立文本索引。MongoDB提供文本索引,支持对字符串内容的文本搜索查询。文本索引可以包含任何值为字符串或字符串元素数组的字段。一个集合只能有一个文本搜索索引,但索引可以有多个字段。

举例

下面的示例演示了如何建立文本索引,并利用它根据文本字段查找咖啡店。

创建集合

使用下面的脚本创建stores集合:

db.stores.insertMany([{ _id: 1, name: "Java Hut", description: "Coffee and cakes" },{ _id: 2, name: "Burger Buns", description: "Gourmet hamburgers" },{ _id: 3, name: "Coffee Shop", description: "Just coffee" },{ _id: 4, name: "Clothes Clothes Clothes", description: "Discount clothing" },{ _id: 5, name: "Java Shopping", description: "Indonesian goods" }]
)

创建文本索引

在mongosh中运行下面的命令,对名称和描述字段创建索引:

db.stores.createIndex( { name: "text", description: "text" } )

精准搜索

可以通过用双引号将要搜搜的文本引起来进行精确搜索,如果$search字符串包含短语和单个术语,则文本搜索将仅匹配包含该短语的文档。

例如,以下命令将查找包含"coffee shop"的所有文档:

db.stores.find( { $text: { $search: "\"coffee shop\"" } } )

排除短语

可以在前面加上一个"-"字符来排除一个单词。例如,要查找所有包含"java""shop"但不包含"coffee "的商店,使用下面的命令:

db.stores.find( { $text: { $search: "java shop -coffee" } } )

结果排序

默认情况下,MongoDB以未排序的方式返回结果,不过,文本搜索查询会为每个文档计算一个相关性得分,以确定文档与查询的匹配程度。

要按相关性得分排序结果,必须显式地投影$meta textScore字段,并根据它排序:

db.stores.find({ $text: { $search: "java coffee shop" } },{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )

聚合管道中也支持文本搜索。

http://www.lryc.cn/news/361084.html

相关文章:

  • 文档智能开源软件
  • [C][可变参数列表]详细讲解
  • 54. 螺旋矩阵【rust题解】
  • 学习笔记——网络参考模型——TCP/IP模型(传输层)
  • Java中的Instant
  • PostgreSQL的锁介绍
  • 4分之1外螺纹怎么编程:挑战与策略解析
  • 运用selenium爬取京东商品数据储存到MySQL数据库中
  • K8S SWCK SkyWalking全链路跟踪工具安装
  • Apache Omid Idea Debug 环境搭建
  • 【面试宝藏】Go并发编程面试题
  • ④单细胞学习-cellchat细胞间通讯
  • 即时通讯平台及门户系统WorkPlus打造移动应用管理平台
  • React@16.x(12)ref 转发-forwardRef
  • 电脑世界的大冒险:用人体比喻让孩子轻松理解电脑20240603
  • 构建智慧银行保险系统的先进技术架构
  • 来自大厂硬盘的降维打击!当希捷酷玩520 1TB SSD卷到369,请问阁下该怎么应对?
  • 什么是封装?为什么是要封装?
  • Spring Cloud | 服务 “注册与发现“ 框架 : Eureka框架
  • 编译链接问题
  • 电涡流的形成范围
  • 学业辅导导师:文心一言智能体详细介绍和开发
  • AI与NLP的完美结合:揭秘ChatGPT
  • 提交一个Bug需要哪些信息?
  • 【Hive SQL 每日一题】统计每月用户购买商品的种类分布
  • Nginx01-HTTP简介与Nginx简介(安装、命令介绍、目录介绍、配置文件介绍)
  • JAVA: 抽象类和接口
  • 风景的短视频一分钟:成都科成博通文化传媒公司
  • 力扣--双指针15.三数之和
  • C++ A (1020) : 幂运算