Mongodb atlas 搜索:如何对同一个查询字符串使用多个分析器,以便 return 至少得到一些结果

Mongodb atlas search: how to make use of multiple analyzers for the same query string, so as to return atleast some result

所以问题陈述是 - 我正在使用 atlas 搜索来搜索产品数据,并且有多种语言的产品详细信息。为此,我使用了 multi analyzer 并在同一字段上定义了 standard 和相应的 language 分析器,从而在任何情况下都能得到匹配的产品。要求是,由于这是产品搜索,我需要 return 至少提供一些建议,让用户通过 return 搜索结果查看和访问产品。这是我在研究如何在单个字段上应用多个分析器后使用的映射:

{
  "mappings": {
    "dynamic": false,
    "fields": {
      "name": {
        "type": "string",
        "analyzer": "lucene.standard",
        "multi": {
          "german": {                //german is the name that I have given to this analyzer
            "analyzer": "lucene.german",
            "type": "string"
          },
          "french": {                //french is the name that I have given to this analyzer
            "analyzer": "lucene.french",
            "type": "string"
          }
        }
      }
    }
  }
}

现在,我想要的是 - 如果我正在搜索英语、德语或法语的单词,我必须得到一个结果。这个映射也很好,我得到了所有三种语言的结果。但是用例是,我想要在任何这些情况下的结果:

以上所有要求让我使用所有分析器——标准、关键字、语言、空格和简单。但这将索引大小增加到超过 3KB(这是上限),而且即使对于我目前仅应用语言和标准分析器的映射,我也没有得到结果。

Mongodb Atlas 搜索文档

Path Construction

帮助我了解如何在不使查询复杂化且不使用 compound 运算符的情况下做到这一点。来自文档:

The path parameter is used by the Atlas Search operators to specify the field or fields to be searched. It may contain:

  • A string
  • An array of strings
  • A multi analyzer specification
  • An array containing a combination of strings and multi analyzer specifications

这是我在查询中修改的:

{
    $search: {
               text: {
                        query: event.queryStringParameters.q,
                        path: ['name',{"value": 'name', "multi": "german"},{"value": 'name', "multi": "french"}],
                        fuzzy: {
                                maxEdits: 2
                        }
               }
      }
}