美文网首页
mongodb文本搜索

mongodb文本搜索

作者: CodingTech | 来源:发表于2016-09-01 22:13 被阅读292次

这几天做app,绕不开搜索,在没有看mongodb文档的情况下,胡思乱想了半个小时该怎么处理文本搜索,没想到官网对于文本搜索有非常详尽的说明,不看官方文档的码农就是少根筋。本文基本按照官网的文本搜索部分翻译,如有错,请各位批评指正!

要在mongodb中使用文本搜索,必须使用text索引和$text操作,下面的例子演示了如何创建text索引并且用它进行文本搜索。假设collection存储的数据如下例所示:

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" } ])

创建索引

在mongodb中做文本搜索,必须要创建文本索引。文本索引建立在collection上,一个collection最多只能建立一个文本索引,文本索引可以cover多个域。如要在上例中的name和description中搜索文本,则可建立文本索引:

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

$text操作

在建立文本索引的基础上,我们可以实施文本操作,如下例在name和description中寻找包括java或coffee或shop的文档,这里的$text表示或操作。

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

当然,也有更精确的搜索操作,如下例中精确寻找包含java或coffee shop的文档

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

mongodb还提供了排除操作,如下例中的寻找包含java或coffee,但不包括coffee的文档

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

在很多情况下,我们需要对搜索的结果进行排序,mongodb也为我们提供了这种排序机制,如下例中所示

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

其实,mongodb对于一般的app中的搜索而言已经足够,在并发度不高的情况下,直接使用即可。如果并发度偏高,可以借助缓存的形式,对常用的搜索关键字,在内存中建立到排表,提升访问效率。

相关文章

  • mongodb文本搜索

    这几天做app,绕不开搜索,在没有看mongodb文档的情况下,胡思乱想了半个小时该怎么处理文本搜索,没想到官网对...

  • Mongodb文本搜索

    近日用mongodb做文本搜索遇到一个问题。针对国外的人的姓名搜索,之前的中文名完全匹配的搜索不能用了。 比如我们...

  • MongoDB全文搜索 --- 2022-04-03

    本章节,介绍MongoDB的全文搜索,区别于SQL的Like,MongoDB的全文搜索对于文本搜索效率要高于SQL...

  • springboot 2.0 + elasticsearch 5

    前一阵子准备为项目搭建一个简单的搜索服务,虽然业务数据库mongodb提供了文本搜索的支持,但是在大量文档需要通过...

  • MAMP环境安装mongodb扩展

    搜索可用的mongodb组件 brew search mongodb 根据本机php版本安装对应的mongodb ...

  • 使用Docker和Elasticsearch搭建全文本搜索引擎应

    给应用添加快速、灵活的全文本搜索对谁都不是一件容易的事情。许多主流数据库,如PostgreSQL和MongoDB,...

  • Docker 安装MongoDB

    1、搜索mongo 安装的版本为:MongoDB server version: 4.2.3 MongoDB视图软...

  • 文本搜索

    搜索包含关键字的行 会将所有包含关键字的行均输出,有时候只需要输出匹配的最后几行: 当然,我们可以在grep 后面...

  • 文本搜索

    To perform text search, MongoDB uses a text index and the...

  • Centos:服务自启

    一、编写脚本 mongodb.sh脚本文本内容 备注:#start mongodb service下为启动某服务的...

网友评论

      本文标题:mongodb文本搜索

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