C'est un peu long pour un commentaire.
Pour ce type de recherche, vous pouvez envisager un index de texte intégral. La documentation est ici
. Ceux-ci implémentent le MATCH . . . AGAINST
fonctionnalité.
Avec une telle fonctionnalité, vous pouvez trier les résultats par pertinence. Cela signifie que vous n'avez pas à décider à l'avance si le connecteur est "et" ou "ou" entre plusieurs mots. Vous pouvez également implémenter une recherche booléenne, ce qui permettrait une logique complexe plus complexe, si vous le souhaitez.