我无法让 edgengram 查询正常运行。我有一条记录“蓝草”,边缘图最小值为 2。“blv”查询字符串返回“蓝草”,尽管它不应该。
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,看到“蓝草”被分解为“bl”、“blu”、“blue”、“gr”、“gra”、“gras”、“grass”,但“blv”没有t 匹配其中任何一个。