Esto es un poco largo para un comentario.
Para este tipo de búsqueda, podría considerar un índice de texto completo. La documentación está aquí
. Estos implementan el MATCH . . . AGAINST
funcionalidad.
Con dicha funcionalidad, puede ordenar los resultados por relevancia. Esto significa que no tiene que decidir de antemano si el conector es "y" o "o" entre varias palabras. También puede implementar una búsqueda booleana, que permitiría una lógica más compleja, si así lo desea.