Я настраиваю автозаполнение на основе ElasticSearch.Я построил автозаполнение, но у него есть одна ошибка: он удаляет последний символ из строки поиска.
Например, если я ищу «CBL», он ищет «CB» и возвращает результат ниже.
C.B.BUILDERS AND CONSTRUCTIONS Private Limited
CB BUSINESS SOLUTION PRIVATE LIMITED
C.B.CHAINS LIMITED
C.B. CHEMICALS LTD
C B COMPUSYSTEMS PRIVATE LIMITED
Где будет возвращен результат ниже по функциональности.
CBL DATA RECOVERY TECHNOLOGIES PRIVATE LIMITED
CBL DATA SCIENCE PRIVATE LIMITED
CBL GLOBAL INDUSTRIES PRIVATE LIMITED
CBL INVESTMENTS LTD
CBL Trading Concepts Private Limited
Вот настройки индекса и Конфигурация, которые я применил.
{
"settings": {
"index": {
"analysis": {
"filter": {},
"analyzer": {
"keyword_analyzer": {
"filter": [
"lowercase",
"asciifolding",
"trim"
],
"char_filter": [],
"type": "custom",
"tokenizer": "keyword"
},
"edge_ngram_analyzer": {
"filter": [
"lowercase"
],
"tokenizer": "edge_ngram_tokenizer"
},
"edge_ngram_search_analyzer": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"edge_ngram_tokenizer": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 5,
"token_chars": [
"letter"
]
}
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"CleanedCompanyName": {
"type": "text",
"fields": {
"keywordstring": {
"type": "text",
"analyzer": "keyword_analyzer"
},
"edgengram": {
"type": "text",
"analyzer": "edge_ngram_analyzer",
"search_analyzer": "edge_ngram_search_analyzer"
},
"completion": {
"type": "completion"
}
},
"analyzer": "standard"
}
}
}
}
}
Ниже приведенпоисковый запрос, который я использую.
{ "suggest":
{ "companyname-suggest-fuzzy":
{ "prefix": "CBL",
"completion": {
"field": "CleanedCompanyName.completion",
"fuzzy": {
"fuzziness": "AUTO"
}
}
}
}
}