Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como armar un buen buscador MYSQL

Estas en el tema de Como armar un buen buscador MYSQL en el foro de Mysql en Foros del Web. Buenas tardes, estoy armando un buscador para una intranet y los estoy haciendo con mysql + php. Mi pregunta es. Cual es el mejor método ...
  #1 (permalink)  
Antiguo 22/09/2012, 15:49
 
Fecha de Ingreso: julio-2012
Ubicación: Asunción
Mensajes: 54
Antigüedad: 11 años, 9 meses
Puntos: 3
Como armar un buen buscador MYSQL

Buenas tardes, estoy armando un buscador para una intranet y los estoy haciendo con mysql + php.

Mi pregunta es. Cual es el mejor método de búsqueda?

Con el "in boolean mode"tengo los mejores resultados, pero como se sabe, de esa forma simplemente se ignora las palabras que tienen menos de 3 letras, lo que me jode la vida.

Además no faltan los usuarios que ingresan mal las palabras.

Como solución al problema me estuve preguntando si lo mejor es hacer una especie de boleano con varios LIKE %query%, o si existe algo que ya soluciona ese problema.

También está el "Quizás quiso decir palabra", como es posible hacer eso?

No hay nada de código en mi consulta porque lo que necesito son ideas de como poder armar el mejor buscador posible con mysql.

muchísimas gracias!
__________________
--
What is real? How do you define real?
If real is what you can feel, smell, taste and see, then real is simply electrical signals interpreted by your brain.
  #2 (permalink)  
Antiguo 24/09/2012, 09:29
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Como armar un buen buscador MYSQL

Hola skyspablo:

En realidad no existe un "mejor" método de búsqueda... todos tienen puntos a favor y en contra, aunque definitivamente opino que utilizar búsquedas de texto completo en una de las mejores...

Hay varios aspectos que puedes considerar para mejorar las búsquedas, como por ejemplo el detalle de la longitud de las palabras a buscar... dale un vistazo a esto:

http://dev.mysql.com/doc/refman/5.0/...ne-tuning.html

definitivamente no recomiendo el uso de condiciones tipo

Código:
campo LIKE '%algo%'
ya que estas tienen un terrible desempeño y el performance de tu servidor se puede ver comprometido...

Para la parte de "Quizás quiso decir palabra" en realidad tendrías que hacer un catálogo de sinónimos, considerando las posibles faltas de ortografía...

obvio -> obio, ovio, hobio, hobvio, hovio...........

Esto puede ser tan simple o tan complicado como quieras, también podrías implementar la función SOUNDEX, para tratar de encontrar resultados "parecidos" aunque esto tampoco implica que tengas el resultado esperado:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     -> SOUNDEX('obvio'),
  3.     -> SOUNDEX('obio'),
  4.     -> SOUNDEX('ovio');
  5. +------------------+-----------------+-----------------+
  6. | SOUNDEX('obvio') | SOUNDEX('obio') | SOUNDEX('ovio') |
  7. +------------------+-----------------+-----------------+
  8. | O100             | O100            | O100            |
  9. +------------------+-----------------+-----------------+
  10. 1 row in set (0.00 sec)

También tendrías que considerar por ejemplo el uso de la letra H... ya que esta puede alterar tu resultado:

Código:
mysql> SELECT
    -> SOUNDEX('hobvio'),
    -> SOUNDEX('hovio'),
    -> SOUNDEX('hobio');
+-------------------+------------------+------------------+
| SOUNDEX('hobvio') | SOUNDEX('hovio') | SOUNDEX('hobio') |
+-------------------+------------------+------------------+
| H100              | H100             | H100             |
+-------------------+------------------+------------------+
1 row in set (0.00 sec)
Te repito esto lo puedes hacer tan simple o tan complicado como quieras, puedes por ejemplo manejar una opción de autocompletar a partir de las búsquedas más comunes, pero hagas lo que hagas, siempre te encontrarás con usuarios que le den al traste con todo tu trabajo. Si esta búsqueda es primordial para tu lógica de negocio, entonces si te conviene invertirle tiempo y esfuerzo en afinar el buscador, pero si resulta una tarea secundaria, olvídate de ella y no que quiebres tanto la cabeza.

Saludos
Leo.
  #3 (permalink)  
Antiguo 24/09/2012, 11:13
Avatar de ikaroraul  
Fecha de Ingreso: octubre-2006
Ubicación: La Paz
Mensajes: 391
Antigüedad: 17 años, 6 meses
Puntos: 16
Respuesta: Como armar un buen buscador MYSQL

Quizás quiso decir palabra

Utiliza la API de GOOGLE, y te facilitara mucho muchiiiisimo

Saludos
__________________
Msn: [email protected]

Etiquetas: buscadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:16.