Анализатор Lucene для обработки йо и йе (русские символы)

Я использую Lucene и StandardAnalyzer для создания индексов в моем коде, однако есть проблема с 'Yo' и 'Ye' (Ё и Е).

Я хочу, чтобы результаты поиска с «yo» также давали результаты с «ye», и наоборот. Я попытался создать новый класс Analyzer, похожий на StandartAnalyzer, с настраиваемым фильтром, но безуспешно. Я также хорошо знаю RussianAnalyzer, но, похоже, у меня это не работает, так как трактует «йо» и «йе» отдельно.

Вот фрагмент, в котором я использую этот анализатор:

QueryParser queryParser = new QueryParser("myText", new MyAnalyzer());
queryParser.setDefaultOperator(QueryParser.Operator.AND);

После этого я выполняю queryParser.parse() и другие элементы построения запросов для поиска.

Возникает вопрос: как правильно делать эту операцию? Должен ли я использовать свой собственный TokenFilter? Или, может быть, мой собственный CharFilter?

Википедия ссылается на рассматриваемого персонажа: https://en.wikipedia.org/wiki/Yo_(Cyrillic) https://en.wikipedia.org/wiki/Ye_(Cyrillic)


person Senso Hakai    schedule 20.02.2018    source источник


Ответы (1)


На первый взгляд, я думаю, вам нужно создать CharFilter, который отображает «yo» на «ye», поскольку иногда это все равно происходит из-за человеческой ошибки (см. Страницу «Yo» выше), поэтому вы с большей вероятностью найдете то, что хотите. с отображением 'yo' -> 'ye'. Помните, что это сопоставление должно происходить как во время поиска, так и во время индексирования.

person Mark Leighton Fisher    schedule 27.02.2018
comment
Спасибо, это помогло! - person Senso Hakai; 16.03.2018