Добрый день!
Опишу сначала проблему: В наших документах иногда встречаются слова с замененными визуально похожими буквами, например, русская "а" и английская "а". Это создает проблемы во время поиска.
Хотел индексировать синонимы, однако вариантов написания может быть очень много. Отсюда вопрос, можно как-нибудь использовать функцию для составления синонимов во время индексации?
Вы можете проиндексировать поле дважды - один раз как есть, второй раз, с переводом всех похожих латинских букв в кириллицу с помощью фильтра символов mapping.
Хорошая идея, но к сожалению хранить 2 экземпляра слишком дорого, к тому же в слове может быть более одной измененной буквы, поэтому я рассчитывал сохранить всевозможные комбинации в качестве синонимов. Подстановка рядом в документ всех комбинаций тоже не подходит по причине поиска в окрестности.
Видимо единственный вариант это перебирать комбинации во время составления поискового запроса.
Вы не будете хранить 2 экземпляра - у вас будет 2 индекса.
к тому же в слове может быть более одной измененной буквы,
Это все равно, все буквы будут заменены на кириллицу.
поэтому я рассчитывал сохранить всевозможные комбинации в качестве синонимов
Это на мой взгляд заплатка, а не решение. Ни к чему хорошему в долгосрочной перспективе это не приведет. Но, если вы хотите это делать, то проще всего это будет сделать в вашем приложении во время генерирования запроса.
Если быть точнее, мне нужно заменять не во всех случаях, а только когда в слове вдруг промелькнула среди русских букв английская. Я смотрю есть Pattern Replace Char Filter так что если составить регулярки на поиск таких ситуаций - это решит мою проблему.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.