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