Я использую ElasticSearch v6.8 и клиент NEST, пишу код C#. Я использую свободное отображение.
Я индексирую поле электронной почты, чтобы найти пользователей, выполнив поиск по их адресу электронной почты. Стандартный анализатор не работал, и я прочитал об использовании токенизатора uax_url_email
. Я подключил его, и он работает лучше, чем стандартный анализатор, но я все еще не могу искать, используя символ @ или '.' персонаж. Пример: введите «firstname», чтобы получить совпадение. Введите «имя @» не совпадает. Введите «firstname.lastname» тоже не совпадает.
Что я делаю не так? Я предполагал, что токенизатор uax_url_email
справится с этим. Вместо этого я переключился на использование NGram, и тогда он работает, но просто странно, что существующий встроенный анализатор электронной почты не обрабатывает знак @ и тому подобное.
Вот мое отображение поля (это простая строка ):
.Map<UserSearchEntity>(
m => m
.AutoMap()
.Properties(p => p
.Text(t => t
.Name(n => n.Email)
.Analyzer("user_email_analyzer")))
Анализатор был зарегистрирован ранее с токенайзером uax_url_email.