Запрос фразы с опечатками


(Vladimir) #1

Добрый день!
Есть простой индекс:

{
"settings" : {
"analysis" : {
"analyzer" : {
"str_search_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase"]
},
"str_index_analyzer" : {
"tokenizer" : "keyword",
"filter" : ["lowercase", "substring"]
}
},

  "filter" : {
    "substring" : {
      "type" : "nGram",
      "min_gram" : 1,
      "max_gram"  : 15
    }
  }
}

},
"mappings" : {
"item" : {
"properties" : {
"name" : {
"type" : "string",
"search_analyzer" : "str_search_analyzer",
"index_analyzer" : "str_index_analyzer"
},
"code" : {
"type" : "string",
"search_analyzer" : "str_search_analyzer",
"index_analyzer" : "str_index_analyzer"
},
"description" : {
"type" : "string",
"search_analyzer" : "str_search_analyzer",
"index_analyzer" : "str_index_analyzer"
}
}
}
}
}

Есть item:
code: 13FT1
name: RECONSTRUCTION ITEM
description: test test test

Первоначально поиск осуществлял запросом
{"query" : {
"multi_match" : {
"query": "xxxx",
"fields": [ "name^3", "code", "description" ]
}
}}

Хотел делать запрос таким образом, чтобы результаты поиска включали близкие значения к запросу, когда запрос содержит опечатки.

т.е. чтобы запрос RECONSTRACTION все равно вернул item code: 13FT1.

Возможно ли такое?

Спасибо.


(Igor Motov) #2

Я бы начал с того, что убрал все эти n-грамы и поигрался бы с параметром fuzziness в multi_match. C nGram этого достичь тоже можно, но возни и проблем будет гораздо больше.


(system) #3