模糊文本搜索 MongoDb Atlas 的搜索索引不适用于字符串数组

问题描述

我有以下架构

collectionName:{
  name:string,address:string,info:["info1","info2",....."infon"]  // this is array of strings
}

我在mongodb Atlas中创建了搜索索引如下

  {
  "mappings": {
    "dynamic": false,"fields": {
      "name": [
        {
          "multi": {
            "simpleAnalyzer": {
              "analyzer": "lucene.simple","type": "string"
            }
          },"type": "string"
        }
      ],"address": [
         {
          "multi": {
            "simpleAnalyzer": {
              "analyzer": "lucene.simple","type": "string"
        }
       ],"info": [
        {
          "type": "string"
        }
      ]
    }
  }
}

以下查询适用于 address 和 name ,但不适用于 info 。

db.collectionName.aggregate([
    {
        $search: {
            index:'txtIdx',//this is my index name
            text: {
                query: "info1",path: "info",// path:['name','address','info'],fuzzy: {
                  maxEdits: 2,prefixLength: 3,},{
        $project: {
          _id: 0,name: 1,address:1,info:1,score: { $Meta: "searchscore" }
    }
    },{$limit:100},{
        $sort:{
            score:-1
        }
    }
])

我什至尝试为 info 字段创建索引,如下所示

  "info":{
    {
      "type": "document"
    },{
      "type": "string"
    }
   }

但即使字符串存在于信息数组中,它仍然给出空结果 有人能告诉我我哪里出错了吗?此外,我只想使用文本搜索索引方式来执行此操作...所以请告诉我如何解决此问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...