Мой поиск Cloudant работает только с подстановочными знаками - PullRequest
0 голосов
/ 25 января 2019

У меня облачная БД с индексом поиска по полям «сайт» и «устройство». Он отлично работает для всех моих поисков на "сайте". Но когда я выполняю поиск на «устройстве», он не возвращает результатов, когда я ищу точный термин. Только если я заменю один символ подстановочным знаком * или?, Он вернет правильные результаты - см. Ниже. Что я делаю не так? Я думал, что «анализатор» может убирать начальные нули, но даже добавление буквы впереди дает тот же результат. А для "сайта" все отлично работает ... Любая помощь приветствуется.

Запрос:

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

Возвращает: { "total_rows": 0, "закладка": "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}"
    }
  }
}
...