Estoy trabajando en una página 'búsqueda avanzada' en un sitio donde ingresaría una palabra clave como 'Me gusta manzanas' y puede buscar en la base de datos usando las siguientes opciones:Php/MySql 'Búsqueda avanzada' Página
Encontrar: Con todas las palabras, con el frase exacta, con al menos uno de las palabras, sin las palabras
puedo cuidar de la 'frase exacta' por:
SELECT * FROM myTable WHERE field='$keyword';
'Al menos uno de los términos' por:
SELECT * FROM myTable WHERE field LIKE '%$keyword%';//Let me know if this is the wrong approach
Pero es el 'Con al menos una de las palabras' y 'Sin las palabras' que estoy atascado en.
¿Alguna sugerencia sobre cómo implementar estos dos?
Editar: En cuanto a 'por lo menos una palabra' no sería un buen método para usar explotar() para romper las palabras clave en palabras, y ejecutar un bucle para agregar
(field='$keywords') OR ($field='$keywords) (OR)....
Debido a que hay hay algunas otras cláusulas Y/O en la consulta también y no conozco la cantidad máxima de cláusulas que puede haber.
+1, esta es la mejor respuesta, pero yo también detalle que el texto completo de MySQL sólo está disponible para las tablas MyISAM, no los innodb. Así que elegir entre consistencia o. búsqueda –
transaccional Si das un poco de código fuente que muestra cómo se pueden hacer las dos características (es decir, todas las palabras y sin las palabras) con el texto completo no podría aceptar su respuesta. –
yo sería feliz para ofrecerle un código de ejemplo. Si usted me puede decir hay dos campos separados en el formulario de búsqueda con y sin o ¿está utilizando un campo? Si se trata de un campo puede simplemente permitir que el usuario agregue las palabras que quiere excluir con un -. –