1

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"

誰かがこれについて何か考えを持っていれば、本当に感謝しています。

ありがとう!

4

0 に答える 0