Elasticsearch удаляет специальные символы (из языков, не основанных на ascii) - PullRequest
2 голосов
/ 10 июля 2020

Для engli sh я мог бы использовать что-то вроде

       "specialCharactersFilter": {
         "pattern": "[^A-Za-z0-9]",
         "type": "pattern_replace",
         "replacement": ""
       }
     }

, чтобы удалить нетекстовые символы.

Однако для языков, отличных от ASCII, таких как азиатские, указанный выше фильтр удаляет все допустимые неспециальные символы.

Как удалить специальные символы из азиатского языка?

1 Ответ

2 голосов
/ 10 июля 2020

Похоже, что в фильтре pattern_replace используется регулярное выражение java.util.regex.

Чтобы удалить любые символы, кроме любой буквы Unicode и десятичного числа di git, вы можете используйте

 "specialCharactersFilter": {
     "pattern": "[^\\p{L}\\p{Nd}]",
     "type": "pattern_replace",
     "replacement": ""
   }

Чтобы убедиться, что вы сохраняете только цифры ASCII и удалите все хинди, тамильский и т. д. c. цифр, вы можете использовать такие варианты, как

"pattern": "[^\\p{L}0-9]"

См. демонстрацию регулярного выражения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...