トークンを特殊文字に分割してインデックス作成前に大文字に変換するカスタムアナライザを作成しようとしています。検索すると結果が得られるはずです特殊文字と小文字/大文字のトークンを分割するカスタムアナライザ
たとえば、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"
}
}
}
それを上記のクエリのように検索すると結果が得られません。
の詳細インフォアこの回答を参照してください:。http://stackoverflow.com/a/ 39662994/4604579 – Val