To trochę za dużo na komentarz.
W przypadku tego typu wyszukiwania możesz rozważyć indeks pełnotekstowy. Dokumentacja jest tutaj
. Implementują one MATCH . . . AGAINST
funkcjonalność.
Dzięki takiej funkcjonalności możesz uporządkować wyniki według trafności. Oznacza to, że nie musisz z góry decydować, czy łącznik to „i”, czy „lub” między wieloma słowami. Możesz także zaimplementować wyszukiwanie logiczne, które pozwoliłoby na bardziej złożoną logikę, jeśli sobie tego życzysz.