查询 MongoDB Atlas 全文搜索中的词子集

Query for sub-set of word in MongoDB Atlas full text search

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

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

我有什么:

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

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

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

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

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

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

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

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