2016-07-12 14 views
0

トークン元続けます。Elasticsearc NGRAMフィルタは保存/私は私の文字列フィールドにNGRAMフィルタを適用しています

"iq"や "a4"などの元のトークンが見つかりません。

ngramの前にいくつかの言語固有の分析を適用していますので、フィールド全体をコピーしないようにしたいと思います。私はngramsでトークンを拡張しようとしています。

アイデアかngram-suggestionsはありますか?ここで

はcustom_ngramフィルタを使用し、私のアナライザの1の例である:

"french": { 
    "type":"custom", 
    "tokenizer": "standard", 
    "filter": [ 
     "french_elision", 
     "lowercase", 
     "french_stop", 
     "custom_ascii_folding", 
     "french_stemmer", 
     "custom_ngram" 
    ] 
} 
+0

問題が何であるか分かりません。 –

+0

たとえば、 "Audi a4を駆動する"という文字列は、ngramフィルタのため "a4"を検索するときには一致しません。しかし、 "driv"、 "drivi"、...は一致します。私は両方を持っている必要があります。 – Philipp

答えて

1

あなたは短いを維持することができます別のアナライザとマルチフィールドとインデックスフィールドを使用するよりも、何のオプションが用意されていません条件も同様です。そのような何か:

"text": { 
     "type": "string", 
     "analyzer": "french", 
     "fields": { 
     "standard_version": { 
      "type": "string", 
      "analyzer": "standard" 
     } 
     } 
    } 

も同様text.standard_versionフィールドにタッチするクエリを調整します。

0

Andrei Stefanが指摘したとおり、私はmulti_fieldsと一緒に行く必要がありました。

私がやったと(フランス語)私のマッピングは次のようになります。

   "french_strings": { 
        "match": "*_fr", 
        "match_mapping_type": "string", 
        "mapping": { 
         "type": "string", 
         "analyzer": "french", 
         "fields":{ 
          "ngram":{ 
           "type":"string", 
           "index":"analyzed", 
           "analyzer":"ngram", 
           "search_analyzer": "default_search" 
          } 
         } 
        } 
       } 

私はフランス語アナライザからのngramフィルタを削除し、サブフィールドのための「カスタムNGRAMのみ」アナライザを使用することにしました.ngram。 この結果、フランス語の分析フィールドと「オリジナルからngram」のサブフィールドになります。

関連する問題