我的Cloudant搜索仅适用于通配符

时间:2019-01-25 12:04:14

标签: indexing cloudant

我有一个Cloudant数据库,其在“站点”和“设备”字段上进行了索引搜索。 我在“网站”上进行的所有搜索都可以正常工作。 但是,当我在“设备”上搜索时,当我搜索确切的字词时,它不会返回任何结果。 仅当我用通配符*或?替换一个字符时,它才会返回正确的结果-参见下文。 我做错了什么?我以为“分析器”可能会删除前导零,但是即使在前面添加字母也会得到相同的结果。对于“站点”,一切都很好... 任何帮助表示赞赏。

请求:

{
    "q" : "device:10000002",
    "include_docs" : false, 
    "limit" : 10
}

返回: {     “ total_rows”:0,     “ bookmark”:“ g2o”,     “行”:[] }

但要求(请注意*)

{
    "q" : "device:1000*002",
    "include_docs" : false, 
    "limit" : 10
}

返回1个正确的结果:

{
    "total_rows": 1,
    "bookmark": "g2wAAAABaANkACZkYmNvcmVAZGIyLmJtLWNjLWV1LWdiLTAyLmNsb3VkYW50Lm5ldGwAAAACYlAAAABiX____2poAkY_8AAAAAAAAGEAag",
    "rows": [
        {
            "id": "53d39813e96c816c1311ca48c6ac9997",
            "order": [
                1,
                0
            ],
            "fields": {
                "device": "10000002",
                "site": "FR000001"
            }
        }
    ]
}

我的数据库是一堆这样的文件:

{
  "_id": "07e04b8e9e003e708aa1f6eb87522c7f",
  "_rev": "6-de665185458e44a7c50df399b807737f",
  "site": "FR000003",
  "device": "10000005",
  "endDate": "00000000000000",
  "endNote": "Falseturefalse"
}

我的索引是:

{
  "_id": "_design/alarmSearch",
  "_rev": "27-6e70a9b21a633f334f6a8251451b2559",
  "views": {},
  "language": "javascript",
  "indexes": {
    "IndexBySite": {
      "analyzer": "standard",
      "index": "function (doc) {\n  index(\"device\", doc.device, {\"store\": true});\n  index(\"site\", doc.site, {\"store\": true});\n}"
    }
  }
}

0 个答案:

没有答案