【问题标题】:Query for sub-set of word in MongoDB Atlas full text search查询 MongoDB Atlas 全文搜索中的单词子集
【发布时间】:2020-07-09 20:18:52
【问题描述】:

我的目标是创建一个索引+搜索管道,所以我可以通过搜索“reprod”找到以下文档:

{ name: "can you find this and reproduce?" }

我有什么

我正在使用默认索引。 我的搜索管道如下所示:

$search: {
    text: {
        query: 'reprod',
        path: 'name',
    },
},

但这不起作用 - 当我在查询中提供整个单词时,我只会得到完整的结果。我希望返回文档,即使我只提供了一个单词的子集。

【问题讨论】:

    标签: mongodb-atlas-search


    【解决方案1】:

    如果您可以更改索引定义,我建议您使用autocomplete operator,但您使用此运算符查询的字段目前要求它们在索引定义中静态定义。对于此示例,您的索引定义可能如下所示:

    {
      "mappings": {
        "dynamic": false,
        "fields": {
            "name": {
              "type": "autocomplete"
            }
        }
      }
    }
    

    然后您的查询将如下所示:

    {
      $search: {
        "autocomplete": {
          "path": "name",
          "query": "reprod"
        }
      }
    }
    

    如果您不想要一个静态定义的索引定义,您可以使用Wildcard Operator 而不是将Allow Analyzed Field 设置为true

    【讨论】:

    • 我现在在使用自动完成搜索 2 个字段时遇到问题,但决定在这里创建一个单独的问题:stackoverflow.com/questions/63186283/…。我希望你也能得到这个答案☺️
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2016-04-20
    相关资源
    最近更新 更多