0
我有一个问题,如果'ford'在数据库中,我搜索'forddddddd'它返回一个匹配。对于'fo'这样的查询,我有ngrams的子部分匹配,for',ford'但'forddddd'不应该匹配。可能是什么问题?以下是我的设置,映射和查询。ElasticSearch问题与匹配结果
设置:
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