2016-09-22 20 views
0

トークンを特殊文字に分割してインデックス作成前に大文字に変換するカスタムアナライザを作成しようとしています。検索すると結果が得られるはずです特殊文字と小文字/大文字のトークンを分割するカスタムアナライザ

たとえば、data @ sourceを指定している場合は、@を空白で置き換える必要があります。空白で置き換えてデータソースのような結果を与える必要がある特殊文字。

ここでは実装方法を説明します。

PUT sound 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "my_analyzer": { 
      "tokenizer": "standard", 
      "char_filter": [ 
      "my_char_filter" 
      ], 
      "filter": [ 
      "uppercase" 
      ] 
     } 
     }, 
     "char_filter": { 
     "my_char_filter": { 
      "type": "pattern_replace", 
      "pattern": "(\\d+)-(?=\\d)", 
      "replacement": "$1 " 
     } 
     } 
    } 
    } 
} 


POST sound/_analyze 
{ 
    "analyzer": "my_analyzer", 
    "text": "data-source&abc" 
} 

は、それは次のように、うまくトークンを分割 -

{ 
    "tokens": [ 
     { 
     "token": "DATA", 
     "start_offset": 0, 
     "end_offset": 4, 
     "type": "<ALPHANUM>", 
     "position": 0 
     }, 
     { 
     "token": "SOURCE", 
     "start_offset": 5, 
     "end_offset": 11, 
     "type": "<ALPHANUM>", 
     "position": 1 
     }, 
     { 
     "token": "ABC", 
     "start_offset": 12, 
     "end_offset": 15, 
     "type": "<ALPHANUM>", 
     "position": 2 
     } 
    ] 
} 

しかし、私はこの中で、小文字、あるいは大文字で検索した場合、それはのような..動作していない:

GET sound/_search?text="data" 

GET sound/_search?text="data" 

GET /sound/_search 
{ 
    "query": { 
    "match": { 
     "text": "data" 
    } 
    } 
} 

それを上記のクエリのように検索すると結果が得られません。

+1

の詳細インフォアこの回答を参照してください:。http://stackoverflow.com/a/ 39662994/4604579 – Val

答えて

0

あなたの検索:

GET sound/_search?q=data 

GET sound/_search?q=data 

POST sound/_search 
{ 
    "query": { 
    "match": { 
     "NAME_OF_YOUR_FIELD": "data" 
    } 
    } 
} 

NAME_OF_YOUR_FIELDはあなたがあなたのデータを格納しているフィールドの名前にする必要がありmatch query here

+0

こんにちはシーリングフィッシュ - それはまだ私のために働いていない!あなたが与えたオプションも試しました。 –

+0

/Downloads/elasticsearch-2.4.0/bin$ curl -XGET http:// localhost:9200/sound/_search?q = 'text' {"took":8、 "timed_out":false、 "_ shards": {"合計":5、 "成功":5、 "失敗":0}、 "ヒット":{"合計":0、 "max_score":null、 "ヒット":[]}}私はできません結果をGETで取得します。 –

+0

curl -XGET 'http:// localhost:9200/sound/_search?pretty' - これは動作しないようです。 –