我无法使edgengram查询正常工作。我有一个记录“blue grass”,edgengram最小值为2.查询字符串“blv”然而返回“蓝色草地”,尽管它不应该。在edgeNGram中找不到返回结果的查询字符串
curl -X POST http://localhost:9200/test -d '{
"mappings": {
"product/fragrance": {
"properties": {
"name_query": {
"index_analyzer": "query_index_analyzer",
"search_anaylzer": "query_search_analyzer",
"as": {},
"type": "string"
}
}
}
},
"settings": {
"analysis": {
"filter": {
"query_edgengram": {
"type": "edgeNGram",
"min_gram": 2,
"max_gram": 20,
"side": "front"
}
},
"analyzer": {
"query_index_analyzer": {
"tokenizer": "lowercase",
"filter": ["asciifolding", "query_edgengram"]
},
"query_search_analyzer": {
"tokenizer": "lowercase",
"filter": ["asciifolding"]
}
}
}
}
}'
curl -X POST "http://localhost:9200/test/product%2Ffragrance/1" -d '{
"name_query": "blue grass"
}'
curl -X GET "http://localhost:9200/test/product%2Ffragrance/_search?load=true&pretty=true" -d '{
"query": {
"bool": {
"must": [{
"query_string": {
"query": "blv",
"fields": ["name_query"],
"default_operator": "OR"
}
}]
}
}
}'
由于某种原因,我从中得到了一个结果。谁能解释为什么?谢谢。我想要发生的是“blv”不应该返回“蓝色草地”,尽管“bl”应该。我已经使用了分析API,并将“blue grass”分解为“bl”,“blu”,“blue”,“gr”,“gra”,“gras”,“grass”,但“blv” t匹配任何这些。
哦,我的,多么尴尬。就是这样,非常感谢...... /脸红 – axsuul