Похоже, preserve_original
не поддерживается в pattern_replace
фильтрах токенов, по крайней мере, не в той версии, которую я использую.
Я сделал обходной путь следующим образом:
Индекс Def
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "whitespace",
"type": "custom",
"filter": [
"lowercase",
"hyphen_filter"
]
}
},
"filter": {
"hyphen_filter": {
"type": "word_delimiter",
"preserve_original": "true",
"catenate_words": "true"
}
}
}
}
}
Это, например, токенизировало бы слова вроде anti-spam
до antispam(removed the hyphen)
, anti-spam(preserved the original)
, anti
и spam.
API анализатора для просмотра сгенерированных токенов
POST / _analyze
{"text": "anti-spam", "analyzer" : "my_analyzer"}
Вывод API анализа ie. сгенерированные токены
{
"tokens": [
{
"token": "anti-spam",
"start_offset": 0,
"end_offset": 9,
"type": "word",
"position": 0
},
{
"token": "anti",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
},
{
"token": "antispam",
"start_offset": 0,
"end_offset": 9,
"type": "word",
"position": 0
},
{
"token": "spam",
"start_offset": 5,
"end_offset": 9,
"type": "word",
"position": 1
}
]
}