Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/07/2015, 09:52
Avatar de RollerSky
RollerSky
 
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Errores En Consulta Para Busquedas

Hola fido-strike,

Sin duda la mejor manera para realizar búsquedas es usando el MATCH AGAINST, pues este método de búsqueda excluye palabras que tengan menos de 3 caracteres, pero porqué así? por el simple hecho que el Motor trata de generalizar que las Palabras con menos de 3 caracteres son considerados como "palabras in valor agregado", entre ellas contamos con las preposiciones, a, por, co, de, etc. Si en una cadena de texto dejáramos que se puedan buscar palabras como "de" o "por" sería innumerable la cantidad de registros, esto lo puedes ver en Google, que para el es indiferente escribir "Hoteles de Playa" que "hoteles Playa".

Además este tipo de búsquedas es muy poderoso pues va poniendo un valor porcentual o puntaje a cada ocurrencia de una palabra, por ello si una palabra solo se muestra una vez, para el buscador es prácticamente irrelevante a una palabra que se encuentra tal vez 3 o 4 veces, esto explica que si usas el MATCH AGAINST en tablas con pocos registros( 3 o 4) el resultado no es el mejor, pues está hecho para tablas con cantidades "grandes" de información.

teniendo en consideración esto te recomiendo:

1. Valida que tus tablas tengan bastantes datos, no uno o dos registros.
2. valida mediante alguna condición que si la palabra que deseas buscar es de 3 o menos caracteres, entonces no usas el MATCH AGAINST , sino que usas la sentencia LIKE, que para estos casos es muy "buena".
3. recuerda que para que el MATCH AGAINST surta efecto, este solo sirve para campos de la tabla que deben ser indices de tipo FULLTEXT, y sólo sirve en tablas que no son InnoDB

Teniendo en cuenta esto creo que debes revisar tu código, no se que tanto hace, pero me atrevo a decir que un buscador así no te tomaría mas de 10 lineas de código..

Saludos.
__________________
www.sawedsa.com

Última edición por RollerSky; 23/07/2015 a las 09:55 Razón: Error en el MATCH