资讯专栏INFORMATION COLUMN

MongoDB Text Search

hyuan / 812人阅读

摘要:为了执行这一运算,使用了和运算符。需要注意的是,视图不支持。只查找和,不包含排序将会它的返还默认是未排序的。但是文本查询请求将会计算相关的评分对每一个即指定与请求匹配的程度。要想按照评分去排序,你必须显性地指出字段并且根据他们来排序。

简介

MongoDB支持一段内容的文本查询。为了执行这一运算,MongoDB使用了 text index 和 $text
运算符。需要注意的是,Views视图不支持 text search。

例子

这一个例子将会展示如何创建一个 text index 和如何使用它去查找 ‘coffee shops’, 在给定的只有文本字段里。首先创建一个 collection stores。

db.stores.insert(
   [
     { _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" }
   ]
)

Text Index 文本索引

MongoDB 提供文本索引来支持文本查询请求在一串内容里,文本索引可以包含任意字段 只要它的值是一个string 或者 一个 string 元素的 array。
为了执行文本查询请求,你必须有一个文本索引在你的 collection里。一个 collection 只能有一个文本查询索引,但是那一个索引可以覆盖多个字段。
例如你可以运行下面的代码,可以操作文本查询在 name 和 description 字段之上。

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

使用 $text 请求运算符去执行文本查询在一个 collection里通过文本索引。
直接用例子来解释了。
这个语句就是去查找所有stores包含任意关键词在[‘coffee’, "shop","java"]中

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

精准短语

通过包装他们在双引号里

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

排除某一项

在关键词前加 - 符号。只查找 “java” 和 “shop”,不包含 “coffee”

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

排序

MongoDB将会它的返还默认是未排序的。但是文本查询请求将会计算相关的评分对每一个 document 即指定 document 与请求匹配的程度。
要想按照评分去排序,你必须显性地指出 $meta textScore字段并且根据他们来排序。

db.stores.find(
   { $text: { $search: "java coffee shop" } },
   { score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
Text search is also available in the aggregation pipeline.

原文:https://docs.mongodb.com/manu...

欢迎加入学习交流群569772982,大家一起学习交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70607.html

相关文章

  • MongoDB索引与优化详解

    摘要:全文索引在中每个集合只允许创建一个索引,因此不用担心存在多个索引造成冲突的问题。全文索引创建全文索引创建方法与创建单键索引复合索引类似。 在MongoDB中通过建立索引可以进行高效的查询,如果没有索引MongoDB将会扫描整个集合与查询的条件进行匹配,这对于性能会造成很大的消耗。技术博客: Node.js技术栈 快速导航 Mongodb索引类型 索引属性 索引实例测试 索引(Ind...

    oujie 评论0 收藏0
  • 聊聊MongoDB - MongoDB索引介绍分享

    摘要:全文索引主要用于搜索业务的索引,通过多种不同的查询方式和条件进行全文索引,适合搜索引擎和站内搜索业务。注全文索引全文索引目前不支持中文。 简述 MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致。由于集合中的键(字段)可以是普通数据类型,也可以是子文档。MongoDB可以在各种类型的键上创建索引。 索引 MongoDB的索引就是集合Co...

    Meathill 评论0 收藏0
  • 聊聊MongoDB - MongoDB索引介绍分享

    摘要:全文索引主要用于搜索业务的索引,通过多种不同的查询方式和条件进行全文索引,适合搜索引擎和站内搜索业务。注全文索引全文索引目前不支持中文。 简述 MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致。由于集合中的键(字段)可以是普通数据类型,也可以是子文档。MongoDB可以在各种类型的键上创建索引。 索引 MongoDB的索引就是集合Co...

    Bowman_han 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<