Like vs FullText: ¿Cuál es el mejor buscador?
Like vs FullText: Cuál es el mejor buscador. Los que desarrollamos software web y/o páginas web conocemos que las búsquedas con el operador «Like» tienen una gran variedad de formas para realizar una búsqueda dentro de una consulta.
Sin embargo, podemos escoger si la búsqueda se hace sobre el texto completo o si tiene en cuenta si la palabra comienza o acaba por el término buscado colocando simplemente el comodín «%» (porcentaje).
Like vs FullText: ¿Cuál es el mejor buscador?
Pero el detalle se presenta cuando nuestra plataforma ya dispone de un número elevado de registros en nuestra base de datos, digamos más de 15 000, entonces los resultados devueltos por el buscador pueden ser muy cargados y totalmente irrelevantes.
Operador Like:
<?php $SQL="Select idcliente, nombre From clientes Where nombre Like '%Carlo%';" ?>
¿FullText es la solución?
MySQL viendo este inconvenente crearon un tipo de índices llamados «FullText» que se pueden incorporar a nuestras columnas, estos índices nos permiten hacer búsquedas mucho más afinadas que las devueltas por el operador «Like»
Estos devuelven un valor en forma de porcentaje indicándonos el grado de semejanza que tiene el término buscado con los registros encontrados.
Este tipo de búsqueda Mysql tiene unas características que detallaremos a continuacion:
- Límite del 50%Esto significa que si la consulta realizada nos devuelve más del 50% de los registros disponibles en la tabla, esta no se mostrará, evitando así enseñar al usuario un millar de coincidencias que no tendrían ninguna relevancia.
- Palabras con menos de 3 caracteresEl uso de este tipo de búsqueda es tan solo para palabras que contengan más de 3 caracteres, por lo tanto el resto (como de, el, la, rey, etc) serán omitidas de manera automática. por ejemplo si busco una palabra ejemplo «rey» no lo mostrara.
- Case-InsensitiveNo distingue entre mayúsculas y minúsculas, así si el usuario busca «coche», «Coche» o «cocHe» siempre devolverá los mismos resultados.
Tambien se podria añadir que no distingue espacios, es decir los omite para realizar la busqueda.
Like vs FullText: ¿Cuál es el mejor buscador?
A criterio del autor elijo el operador LIKE por qué? por varias razones como ya se describieron, el FullText es excelente, pero las búsquedas que lo limita a 3 dígitos o 4 en algunos servidores, lo convierte en limitado, lo digo porque hay apellidos como el caso de «REY», «LEE» que sería omitido por FullText y otras palabras
Por lo tanto, otros me dirán no es problema configuro el mysql para que me acepte más caracteres, excelente, pero si mi servidor es compartido ahí el detalle, en cambio el operador Like se puede restringir los caracteres de búsqueda o contar palabras de una frase para realizar una busqueda avanzada palabra por palabra como a continuacón detallaremos.
BUSQUEDA AVANZADA LIKE PALABRA POR PALABRA
$pri = trim($_POST['apellido']); // contar las palabras de una frase $nume= str_word_count($pri, 0);$uno = explode(" ", $pri, $nume); //separar las frases de busqueda $bun1=trim($uno[0]); $bun2=trim($uno[1]); $bun3=trim($uno[2]); $bun4=trim($uno[3]); $bun5=trim($uno[4]); $bun6=trim($uno[5]); $bun7=trim($uno[6]);
Como quedaría en la consulta.
<?php $select = "SELECT * FROM clientes WHERE Nombres like '%".$bun1."%' and Nombres like'%".$bun2."%' and Nombres like'%".$bun3."%' and Nombres like'%".$bun4."%' and Nombres like'%".$bun5."%' and Nombres like'%".$bun6."%'"; ?>
Fuente: Fulltext