ElasticSearch неправильно индексирует и запрашивает не буквенно-цифровые символы

Мой индекс ElasticSearch неправильно индексирует и запрашивает не буквенно-цифровые символы. В частности, точки и тире вызывают проблемы.

Если я проиндексирую документ с именем «ОК Коррал», он должен соответствовать запросам «ОК Коррал». Точно так же, если я проиндексирую «Whiskey A Go-Go», я бы хотел, чтобы он соответствовал «Whiskey A GoGo» и «Whiskey A Go Go».

Сейчас только запросы с правильными точками и тире вернут эти документы.

Я надеюсь, что это решение также решит любые потенциальные проблемы с другими небуквенно-цифровыми символами, такими как запятые и апострофы.

Это похоже на работу для фильтров токенов ElasticSearch, но я не смог найти тот, который делает то, что я ищу. Кроме того, я хотел бы сделать это в ElasticSearch — я не хочу писать собственные манипуляции со строками для нормализации данных до того, как они попадут в мой индекс ES.

Спасибо за вашу помощь!


person Clay Wardell    schedule 28.08.2012    source источник
comment
Взгляните на фильтр разделителя слов, он должен делать по крайней мере некоторые вещи, которые вам нужны.   -  person javanna    schedule 29.08.2012
comment
@javanna Похоже, что разделитель слов делает то, что я хочу, с тире - теперь это просто эти надоедливые точки. Спасибо!   -  person Clay Wardell    schedule 29.08.2012
comment
Отлично, я только что добавил свой комментарий в качестве ответа.   -  person javanna    schedule 29.08.2012


Ответы (1)


Возможно, вы захотите взглянуть на разделитель слов. Фильтр токенов. По крайней мере, он будет делать то, что вы хотите, с «Whiskey A GoGo» и «Whiskey A Go-Go». Вы можете заранее проверить его поведение с помощью analyze API. .

person javanna    schedule 29.08.2012
comment
Как оказалось, фильтр токенов-разделителей слов также решил мою проблему с точками. Одна вещь, которую я должен был помнить, это снять стандартный токенизатор — если он есть, строки уже будут токенизированы (в моем случае неправильно), прежде чем они попадут в фильтр. Но с помощью токенизатора пробелов и правильно настроенного фильтра токенов-разделителей слов я смог заставить все работать правильно. Спасибо! - person Clay Wardell; 30.08.2012