2017-05-31 35 views
3

省略形を使用した検索を可能にする既存の/カスタムアナライザを設定しようとしています。たとえば、テキストフィールドが "バンクオブアメリカ"の場合、BOfAまたはBOAを検索すると、BofAなどがこのレコードと一致する必要があります。ElasticSearch - 略語を使用して検索

どうすればいいですか?助けてください。

答えて

0

おそらくsynonym filterトークンをカスタムアナライザに使用できます。例えば

以下のマッピング

{ 
"settings": { 
    "analysis": { 
     "analyzer": { 
      "my_analyzer": { 
       "tokenizer": "standard", 
       "filter": ["lowercase", "synonym_filter"] 
      } 
     }, 
     "filter": { 
      "synonym_filter": { 
       "type": "synonym", 
       "synonyms": [ 
        "bank of america,boa" 
       ], 
       "expand": true 
      } 
     } 
    } 
}, 
"mappings": { 
    "document": { 
     "properties": { 
      "text": { 
       "type": "text", 
       "analyzer": "my_analyzer", 
       "fielddata": true 
      } 
     } 
    } 
} 

}

は間違いなくあなたは、リストに多くを追加したり、同義語ファイルを使用することができます。

BOfAまたはBOAのクエリでは、BofAの2つのアプローチが有効です。これらの可能な組み合わせで

1)その他の同義語

"synonyms": [ 
        "bank of america,boa" 
        "bank of america,bofa" 
       ] 

2)または

{ 
    "query": { 
    "match": { 
     "text" : { 
     "query": "bofa", 
     "fuzziness": 2 
     } 
    } 
    } 
} 

をそのままabrevationsを維持し、あいまいクエリを使用しますがESにabrevationsを供給するsynoymsが必要になります。

関連する問題