У меня проблема с запросом, где, если «ford» находится в базе данных, и я ищу «forddddddd», он возвращает совпадение. У меня есть ngrams для вспомогательного частичного сопоставления для запросов типа fo, for, ford, но forddddd не должно совпадать. В чем может быть проблема? Ниже приведены настройки, сопоставления и запрос.ElasticSearch Issue with Matching Results
Настройки:
settings: {
number_of_shards: 1,
analysis: {
filter: {
ngram_filter: {
type: 'edge_ngram',
min_gram: 2,
max_gram: 15
}
},
analyzer: {
ngram_analyzer: {
type: 'custom',
tokenizer: 'standard',
filter: [
'lowercase',
'ngram_filter'
]
}
}
}
}
Отображения:
mappings: [
{
name: 'car',
_all: {
type: 'string',
analyzer: 'ngram_analyzer'
},
properties: {
description: {
properties: {
name: {
type: 'string',
include_in_all: true,
term_vector: 'yes',
analyzer: 'ngram_analyzer'
},
model: {
type: 'string',
include_in_all: true,
term_vector: 'yes',
analyzer: 'ngram_analyzer'
}
}
}
}
}
]
Запрос:
GET car/_search
{
"query": {
"match": {
"_all": {
"query": "Forddddddd"
}
}
}
}
Это работает! Спасибо :) – emarel
рад, что я мог бы помочь! – ChintanShah25