我無法使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