Я использую анализатор снежного кома для поиска заголовков нескольких документов. Все работает хорошо, но есть свои особенности.
Пример:
Поиск по запросу «клапан», «клапан» или «клапаны» возвращает такое же количество результатов. В этом есть смысл, поскольку анализатор снежного кома сводит все к «valv».
У меня возникают проблемы при использовании подстановочного знака. Поиск по запросу «клапан *» или «клапаны *» не дает никаких результатов. Поиск "valv *" работает должным образом.
Я понимаю, почему это происходит, но не знаю, как это исправить.
Я подумал о написании анализатора, который хранит стебельные и не связанные токены. В основном применяют два анализатора и объединяют два потока токенов. Но я не уверен, что это практическое решение.
Я также думал об использовании AnalyzingQueryParser, но я не знаю, как применить это к многополевому запросу. Кроме того, использование AnalyzingQueryParser вернет результаты для «клапана» при поиске «клапанов *», а это не ожидаемое поведение.
Есть ли «предпочтительный» способ использования и подстановочных знаков, и алгоритмов выделения корней?