Я бы использовал SynonymFilter для firstName при индексации, чтобы у вас были все возможные комбинации (Боб -> Роберт, Роберт -> Боб и т. Д ...).Индексируйте существующих пользователей.
Затем используйте QueryParser (без SynonymFilter в анализаторе), чтобы задать несколько нечетких запросов.
Вот код, с которым я пришел:1006 *
Что приводит к:
+firstName:Bob +lastName:Williams
Found Robert Williams
+firstName:Bob +lastName:wolliam~0.5
Found Robert Williams
Надеюсь, это поможет!