0

現在、Google のスペルミス修正に似たサジェスタを設定しようとしています。次のクエリでElastic Suggestersを使用しています。

{
   "query": {
      "match": {
         "name": "iphone hüle"
      }
   },
   "suggest": {
      "suggest_name": {
         "text": "iphone hüle",
         "term": {
            "field": "name"
         }
      }
   }
}

次の提案が得られます。

"suggest": {
      "suggest_name": [
         {
            "text": "iphone",
            "offset": 0,
            "length": 6,
            "options": []
         },
         {
            "text": "hule",
            "offset": 7,
            "length": 4,
            "options": [
               {
                  "text": "hulle",
                  "score": 0.75,
                  "freq": 162
               },
               ...
               {
                  "text": "hulk",
                  "score": 0.75,
                  "freq": 38
               }
            ]
         }
      ]
   }

今私が抱えている問題は、オプション内と提案内の返されたテキストにあります。私が送信したテキストと返されたテキストは、「hule」ではなく「hüle」である必要があります。さらに、返されるオプション テキストは、実際には「hulle」ではなく「hülle」である必要があります。クエリとサジェスタに同じフィールドを使用しているため、通常のクエリ結果ではなく、サジェスタでのみウムラウトが欠落しているのはなぜだろうか。

ここでクエリ結果を参照してください。

            "_source": {
               ...
               "name": "Ladegerät für iPhone",
               "manufacturer": "Apple",
            }
4

1 に答える 1

1

クエリ結果で返されるデータ、つまり

"name": "Ladegerät für iPhone"

フィールドの格納内容です。それはまさにあなたのソースデータです。ただし、検索と当然のことながら提案者も、アナライザーによって処理されたトークンを含む逆インデックスで作業します。ウムラウトを折りたたむアナライザーを使用している可能性が最も高いです。

奇妙なことに、昨日同僚とこのことについて話し合いました。正規化されていないトークンをインデックス化するために、インデックス化されて保存されない別のフィールドが必要になる可能性があるという結論に達しました。これを使用して、提案用語をフェッチします。さらに、正確な検索、つまり、ミュラーとミューラー、写真と写真、ルネとルネを区別する検索を実行できることも特徴の 1 つです。

于 2016-02-13T11:48:02.757 に答える