edgengramクエリを正しく動作させるのに問題があります。エッジグラムが2以上のレコード「bluegrass」が1つあります。ただし、「blv」のクエリ文字列は「bluegrass」を返しますが、そうではありません。
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」が「青い草」を返すべきではないのに、「blv」が戻るべきではないということです。分析APIを使用して、「青い草」が「bl」、「blu」、「blue」、「gr」、「gra」、「gras」、「grass」に分解されているのを確認しましたが、「blv」はそうではありません。それらのいずれかに一致します。