2016-06-16 6 views
0

簡単な実験として、Elasticsearch 2.2を使用して、小文字の "s"で終わる単語の最後の文字を削除します。たとえば、「音」という単語は「音」として索引付けされます。Elasticsearch - 単語の最後からsを削除する方法

私はこのような私のアナライザを定義しています:

{ 
    "template": "document-index-template", 
    "settings": { 
    "number_of_shards": 1, 
    "analysis": { 
     "filter": { 
     "sFilter": { 
      "type": "pattern_replace", 
      "pattern": "([a-zA-Z]+)([s](|$))", 
      "replacement": "$2" 
     } 
     }, 
     "analyzer": { 
     "tight": { 
      "type": "standard", 
      "filter": [ 
      "sFilter", 
      "lowercase" 
      ] 
     } 
     } 
    } 
    } 
} 

私はこの要求を使用して用語 "沈黙の音" を分析する際次に:

<index>/_analyze?analyzer=tight&text=sounds%20of%20silences 

を私が手:

{ 
    "tokens": [ 
     { 
     "token": "sounds", 
     "start_offset": 0, 
     "end_offset": 6, 
     "type": "<ALPHANUM>", 
     "position": 0 
     }, 
     { 
     "token": "of", 
     "start_offset": 7, 
     "end_offset": 9, 
     "type": "<ALPHANUM>", 
     "position": 1 
     }, 
     { 
     "token": "silences", 
     "start_offset": 10, 
     "end_offset": 18, 
     "type": "<ALPHANUM>", 
     "position": 2 
     } 
    ] 
} 

"サウンド"が "サウンド"で、 "サイレンス"が "無音"であると期待しています

+0

あなたは学術目的のためか、実用のためにこれをやっています言語分析?より良い英語のトークン処理をしようとするなら、そのための[アナライザ](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-snowball-analyzer.html)があります。 –

答えて

3

上記アナライザの設定は.Iはあなたが使用することを意図したものだと思い無効ですstandard

例に設定トークナイザとタイプcustomのアナライザです:

{ 

    "settings": { 
    "number_of_shards": 1, 
    "analysis": { 
     "filter": { 
     "sFilter": { 
      "type": "pattern_replace", 
      "pattern": "([a-zA-Z]+)s", 
      "replacement": "$1" 
     } 
     }, 
     "analyzer": { 
     "tight": { 
      "type": "custom", 
      "tokenizer": "standard", 
      "filter": [ 
      "sFilter" 
      ] 
     } 
     } 
    } 
    } 
} 
+0

よく働く。 – Redtopia

関連する問題