私は以下の基準で検索を実行する必要があります。Elasticsearchで適切な分析装置を選択する方法
1]大文字小文字を区別しないマッチング
2]特殊文字は
3と一致]部分一致
次のように私は私がインデックス化されますが を必要とする上記のすべて満たしている、「NGRAMフィルタ」を使用しています150ワードまでの長さを持つ可能性のある「コメント」、「説明」などのフィールドを持つ非常に巨大なデータです。 Webからの参考文献から、 "ngram"フィルタを使用すると、ディスク容量が大きくなります。 上記の要件に
{
"template": "*",
"settings": {
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 25
}
},
"analyzer": {
"case_insensitive": {
"tokenizer": "whitespace",
"filter": [
"ngram_filter",
"lowercase"
]
},
"search_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": "lowercase"
}
}
}
},
"mappings": {
"incidents": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "string",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"analyzer": "case_insensitive",
"search_analyzer": "search_analyzer"
}
}
}
]
}
}
}
感謝を満たすためにあらゆる選択肢があります!
ありがとうございました!部分一致のためにワイルドカードを使用しようとしましたが、大文字と小文字が区別され、使用できませんでした。 約150〜200語を含むフィールドにngramフィルタを使用できますか? – SSG
'query_string'クエリを試すこともできます。しかし、パフォーマンス上の理由から、n-gramを使い続ける方が良いでしょう。それらはトークンでもユニークでもないので、オーバーヘッドがあまり大きくならないようにしてください。したがって、トークン自体は一度しか格納されません。トークンエントリは、文字列全体ではなく、参照として保存されます – Random
同じ文脈で別の質問を投稿しましたが、ここで助けてください。 https://stackoverflow.com/questions/44300200/elasticsearch-can-we-apply-both-n-gram-and-language-analyzers-during-indexing – SSG