ElasticSearch は、'name' の複数フィールドを使用してビジネス ドキュメントのインデックスを作成するため、さまざまな程度の名前一致 (完全一致、多数の単語の 1 つなど) に重みを付けることができます。ここに私のマッピングからのスニペットがあります
"name" : {
"type" : "multi_field",
"fields": {
"name": {"type" : "string", "store" : "yes", "index_analyzer" : "AutoCompleteIndexAnalyzer", "search_analyzer" : "AutoCompleteSearchAnalyzer"},
"exact_match": {"type" : "string", "store" : "yes", "index_analyzer" : "ExactMatchNameIndexAnalyzer", "search_analyzer" : "ExactMatchNameSearchAnalyzer"},
"auto_name": {"type" : "string", "store" : "yes", "index_analyzer" : "keyword", "search_analyzer" : "keyword"},
}
},
これは複数のフィールドであるため、値を提供するのは 1 回だけです。ES はそれを複数回分析するだけです。
したがって、「名前」サブフィールドは正しいのに、「壊れていない」サブフィールドが完全に間違った値を取得する方法に完全に困惑しています。なぜ完全一致が機能しないのか理解できなかったので、検索結果で「exact_match」トークン化を行うスクリプト フィールドを作成しました。
"exact_match_tokenized_name": [
"santininewyorkstyledeli"
],
"name": "Sal NY Pizza",
"name.auto_name": "Sal NY Pizza"
誰かがこれについて何か考えを持っていれば、本当に感謝しています。
ありがとう!