Я бы посоветовал хорошенько взглянуть на Hibernate Search, чтобы вы могли использовать силу Lucene.
Если вы изначально требовали относительно простых требований к поиску, возможно, реализовать его самостоятельно не так уж и плохо, но, поскольку вы хотите добавить функции и расширить поиск, для этого потребуется написать все больше и больше кода и сделать функцию более сложный Почему бы не использовать мощную, хорошо известную библиотеку, которая уже делает все это (и даже больше)?