Método de campos de búsqueda MYSQL

Por favor ayuda, estoy muy confundido acerca de mi situación.

Estoy empezando a crear una función de búsqueda, pero no estoy seguro de cuál es la mejor manera de hacerlo. En el front-end, los usuarios podrán ingresar palabras en un campo de texto, luego buscarán en la base de datos MYSQL, como a continuación:

por lo que buscan 'Adult' y cada item_id (Clave principal) con 'Adult' en la columna 'nombre' aparece en la lista. O ingresan en 'negro' y cada item_id con 'negro' en 'colores' está listado. o entran en 'Adult Blue' ycada elemento con cualquiera de los 'adultos'o Azul subiría. Estoy seguro de que tienes la idea

He leído sobre varios métodos, pero no puedo averiguar cuál es el mejor:

Usando unMuchos a uno tabla: parece que funcionaría, pero hay más de 500 elementos únicos, por lo que serían miles y miles de filas. Para item_id 1 tendría que hacer una fila para 'Adulto', una fila para 'Denim', una fila para 'Pantalones', una fila para 'negro', una fila para 'rojo', una fila para 'azul'. También podría codificar todo.

UtilizandoFIND_IN_SET: ¿Esto va a funcionar? ¿Tendría que almacenar los valores con comas como?Adult,Denim,Pants y tambiénEXPLODE separar los valores? Iba a probar este método, pero sigo leyendo que almacenar muchos valores en un campo es una muy mala práctica.

O sonExpresiones regulares ¿lo que estoy buscando?

¿Cuál es la mejor manera de almacenar los valores y cuál es la mejor manera de recuperarlos? No estoy pidiendo el código exacto, solo los métodos a utilizar. Cualquier consejo es apreciado!