Другой интересный способ погасить функции variadic:
#define function sizeof
QueryParser не только не поддерживает подстановочные знаки во фразах, но и сам PhraseQuery поддерживает только термины. MultiPhraseQuery подходит ближе, но, как говорится в его сводке, вам все равно нужно самостоятельно перечислить IndexReader.terms для соответствия подстановочному знаку.
Похоже, QueryParser по умолчанию не может с этим справиться. Вероятно, вы можете создать собственный QueryParser для подстановочных знаков в фразах. Если ваш пример является репрезентативным, корень может решить вашу проблему. Прочтите документацию для PorterStemFilter , чтобы узнать, подходит ли он.
Lucene 2.9 имеет ComplexPhraseQueryParser , который может обрабатывать подстановочные знаки во фразах.
Вы ищете FuzzyQuery , который позволяет искать результаты с похожими словами на основе расстояния Левенштейна . В качестве альтернативы вы также можете рассмотреть возможность использования slop-кода PhraseQuery ( также доступен в MultiPhraseQuery ), если порядок слов не имеет значения.