テキストブロック内の部分フレーズを検索する必要があります。ほとんどの単語は標準の長さになります。 max_gramの値を10にしておきたいのですが、それよりも多くの文字を含むID /コードが時々あることがあります。最初の10文字が一致するクエリを入力した後で残りの文字は表示されません。用語がngramの長さを超えたときにfalse検索結果を返す検索結果のクエリ
例えば、ここでのマッピングは次のとおりです。
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"autocomplete": {
"tokenizer": "autocomplete",
"filter": [
"lowercase"
]
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10,
"token_chars": [
"letter"
]
}
}
}
},
"mappings": {
"doc": {
"properties": {
"title": {
"type": "text",
"analyzer": "autocomplete"
}
}
}
}
}
とドキュメント:
POST my_index/doc/1
{
"title": "Quick fox with id of ABCDEFGHIJKLMNOP"
}
私は、クエリを実行した場合:
POST my_index/doc/_search
{
"query": {
"match_phrase": {
"title": {
"query": "fox wi"
}
}
}
}
を期待どおりにドキュメントを返します。しかし、私がこれを実行した場合:
POST my_index/doc/_search
{
"query": {
"match_phrase": {
"title": {
"query": "ABCDEFGHIJxxx"
}
}
}
}
また、これを実行しないでください。 xが10番目の文字の後にあるが、その前にない場合は、これが実行されます。どうすればこれを避けることができますか?私は、バージョン5.デフォルトで