05/06/2014, 07:10
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: Encontrar palabras con al menos 3 caracteres con MATCH AGAINST por un lado, es factible reducir la cantidad de caracteres de las palabras a buscar. Pero no es conveniente.
No es conveniente porque mientras menos letras consideras en las palabras, mayor es el índice de resultados erróneos o falsos positivos. El límite de cinco caracteres se ha puesto como estándar porque es la cantidad mínima promedio en diferentes idiomas para reconocer una palabra con cierto nivel de precisión.
Si permitieras poner tres, podrían poner "del", "asi", "eso", y trata de imaginar la cantidad de coincidencias posibles de tales búsquedas. Demasiadas, ¿no?
Además, hay un pequeño problema que debes considerar: Por una simple cuestión performántica, no es conveniente jamás realizar búsquedas donde el nivel de coincidencias se acerque al 50% de los registros.
Cuando una búsqueda en un DBMS cualquiera, tiene resultados próximos o superiores al 50% del total de registros, normalmente los DBMS descartan los índices y hacen un full table scan, porque de ese modo se reduce el tiempo de lectura. Esto sucede entre otras cosas, porque el overhead de la búsqueda, sumado al de la lectura de los registros, se vuelve igual o superior a leer la tabla entera.
¿Se enciente el problema?
Normalmente lo que se hace es meter en las vistas de la aplicación una restricción por JavaScript que no le permita al usuario realizar búsquedas con palabras menores a cierta longitud.
El usuario no tiene por qué hacer cualquier cosa. Es tu obligación como desarrollador lograr que haga cosas que no conspiren contra el sistema.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |