2016-12-04 10 views
0

キーワードとテキストのデータ型でインデックスに文字を変更する必要があります。そのためには、同じ文字マップフィルタをキーワードアナライザと言語固有のアナライザにプロジェクトに追加したいと考えています。 言語固有のアナライザーとキーワードアナライザーを拡張して自分のフィールドで使用する2つのカスタムアナライザーを作成します。 と私の実装があります:キーワードとテキストのデータ型のelasticsearchフィルタ文字

"analysis": { 
    "analyzer": { 
    "persian_text_analyzer": { 
     "type": "persian", 
     "char_filter": [ 
     "arabic_to_persian_filter" 
     ] 
    }, 
    "persian_keyword_analyzer": { 
     "type": "keyword", 
     "char_filter": [ 
     "arabic_to_persian_filter" 
     ] 
    } 
    }, 
    "char_filter": { 
    "arabic_to_persian_filter": { 
     "type": "mapping", 
     "mappings": [ 
     "\u0660 => 0", 
     "\u0661 => 1", 
     "\u0662 => 2", 
     "\u0663 => 3", 
     "\u0664 => 4", 
     "\u0665 => 5", 
     "\u0666 => 6", 
     "\u0667 => 7", 
     "\u0668 => 8", 
     "\u0669 => 9", 
     "\u064a => \u06cc", 
     "\u0643 => \u06a9" 
     ] 
    } 
    } 
} 

が、それは動作しません。 既存のアナライザーを拡張し、既存のフィルターを上書きしないでいくつかのフィルターを追加することは可能ですか?

私の問題を解決するにはどうすればよいですか?私は2つのミスを持っていた私の問題 を解決した@jasonzの戦車と

+0

「$ endpoint/$ index/_analyze?analyzer = persian_keyword_analyzer&text = 0」とは何ですか?ここで @jasonz – jasonz

+0

結果である:{ \t "トークン":[ \t \t { \t \t \t "トークン": "0"、 \t \t \t "start_offset":0、 \t \t \t「end_offset ":1、 \t \t \t "タイプ":単語、 \t \t \t "位置":0 \t \t} \t] } –

+0

あなたは、インデックスの設定を更新しましたか?結果は「トークン」:{{"トークン": "0"、 "開始オフセット":0、 "終了オフセット":1、 "タイプ": "単語"、 "位置":0} } '、少なくともES v2.3.5で。 – jasonz

答えて

0

: の1-

"persian_keyword_analyzer": { 
     "type": "keyword", 

でのタイプでは、カスタム
2 - キーワードの種類はので、ここでアナライザ
を持つことはできませんする必要がありますされます最後の設定:

"settings": { 
    "analysis": { 
     "char_filter": { 
     "zero_width_spaces": { 
      "type":  "mapping", 
      "mappings": [ "\u200c => \u0020"] 
     }, 
     "arabic_to_persian_filter": { 
      "type": "mapping", 
      "mappings": [ 
      "\u0660 => 0", 
      "\u0661 => 1", 
      "\u0662 => 2", 
      "\u0663 => 3", 
      "\u0664 => 4", 
      "\u0665 => 5", 
      "\u0666 => 6", 
      "\u0667 => 7", 
      "\u0668 => 8", 
      "\u0669 => 9", 
      "\u064a => \u06cc", 
      "\u0643 => \u06a9" 
      ] 
     } 
     }, 
     "filter": { 
     "persian_stop": { 
      "type":  "stop", 
      "stopwords": "_persian_" 
     } 
     }, 
     "analyzer": { 
     "persian_text_analyzer": { 
      "type": "custom", 
      "tokenizer":  "standard", 
      "char_filter": [ 
      "zero_width_spaces", 
      "arabic_to_persian_filter" 
      ], 
      "filter": [ 
      "lowercase", 
      "arabic_normalization", 
      "persian_normalization", 
      "persian_stop" 
      ] 
     }, 
     "persian_keyword_analyzer": { 
      "type": "custom", 
      "tokenizer":  "keyword", 
      "char_filter": [ 
      "zero_width_spaces", 
      "arabic_to_persian_filter" 
      ], 
      "filter": [ 
      "lowercase", 
      "arabic_normalization", 
      "persian_normalization" 
      ] 
     } 
     } 
    } 
    } 
関連する問題