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

Query recursiva en MySql con analisis sintáctico y valoración... nada más!

Estas en el tema de Query recursiva en MySql con analisis sintáctico y valoración... nada más! en el foro de Mysql en Foros del Web. Hola Gente, Tengo la típica tabla: Código: [PARENT | STRING | CHILD] 1 aviones 0 2 embarcaciones 0 3 grande 1 4 acuáticas 2 5 ...
  #1 (permalink)  
Antiguo 12/01/2010, 16:34
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Query recursiva en MySql con analisis sintáctico y valoración... nada más!

Hola Gente,

Tengo la típica tabla:


Código:
[PARENT |       STRING         |       CHILD]
      1          aviones               0
      2          embarcaciones         0
      3          grande                1
      4          acuáticas             2
      5          modelo XH1            3
      6          modelo XH1            4
Lo que quiero es lo siguiente:

Pasando el texto "El avión XH1 está genial", busqué:

El y está no entran el la valoración.

avión ~= aviones -> palabra derivada y le de un punto 0.5
avión != embarcaciones -> no relacionada puntos 0.0

aviones palabra con valoración positiva, contiene:

grande != no esta en el string puntos 0.0
modelo XH1 ~= XH1 está en el string puntos 0.8 (ya que es más especifico que aviones, por tanto tiene más puntaje, supongo un multiplo de la profundidad)

Resultado, palabra con más puntaje (debería ser un promedio ponderado de los resultados o promedio simple):

id 5 => string Modelo XH1, es lo que busco.

Estuve pensando en utilizar una busqueda utilizando fulltext, pero me parece que me alejo antes de acercarme, que se les ocurriría para solucionar el tema?

No importa si tengo que utilizar código externo.

Saludos.
  #2 (permalink)  
Antiguo 12/01/2010, 21:50
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Query recursiva en MySql con analisis sintáctico y valoración... nada más!

pues no que halla entendi mucho, pero busca acerca de QUERIES con MATCH ...AGAINST

esto lo que hace es una especie de like con las palabras que se le manden contra campos full text y retorna los registros con una valor X, entre mas alto este valor mas coincidencias.

http://www.mysql-hispano.org/page.php?id=15&pag=4
http://www.desarrolloweb.com/articulos/2087.php
http://dev.mysql.com/doc/refman/5.0/...xt-search.html
  #3 (permalink)  
Antiguo 12/01/2010, 23:33
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Query recursiva en MySql con analisis sintáctico y valoración... nada más!

Cita:
Iniciado por webness Ver Mensaje
pues no que halla entendi mucho, pero busca acerca de QUERIES con MATCH ...AGAINST
Gracias, el tema es que para hacer ese tipo de consulta debes tener campos con indices fulltext, el problema es que yo solo tengo un conjunto de la palabras relacionadas por su id.

Explayandome, lo que trato de hacer es al buscar "El avión XH1 está genial" devuelva el valor id 5 => string modelo XH1.

Pero para esto primero debe armar o caminar el árbol, en sí la comparación sería:

1: "aviones grandes modelos XH1" contra "El avión XH1 está genial"
2: "embarcaciones acuáticas modelos XH1" contra "El avión XH1 está genial"

En este caso debería reconocer sólo como válida la primera y devolver el id más profundo en la línea correcta del del árbol, al ser la línea correcta "id 1 => string aviones + id 3 => string grandes + id 5 => string modelos XH1" devuelve este último.
  #4 (permalink)  
Antiguo 13/01/2010, 04:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Query recursiva en MySql con analisis sintáctico y valoración... nada más!

Sobre búsquedas en una base estructurada jerárquicamente, sobre búsquedas de profundidad, etc., te aconsejo que eches un vistazo aquí:
http://dev.mysql.com/tech-resources/...ical-data.html
  #5 (permalink)  
Antiguo 13/01/2010, 08:31
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Query recursiva en MySql con analisis sintáctico y valoración... nada más!

Cita:
Iniciado por jurena Ver Mensaje
Sobre búsquedas en una base estructurada jerárquicamente, sobre búsquedas de profundidad, etc., te aconsejo que eches un vistazo aquí
Hola, gracias, me tengo que sentar a crear el procedure, pero me queda la duda todavía de si es posible buscar por sinónimos y darle algún tipo de valor, por ejemplo aviones contra avión o más dificil aeroplanos contra avión?

Saludos.
  #6 (permalink)  
Antiguo 13/01/2010, 11:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Query recursiva en MySql con analisis sintáctico y valoración... nada más!

podrías crear una tabla con las formas posibles de las palabras que tienes en tu lista. Me explico: si avión es la palabra, añades dos registros, uno con avión, y otro con aviones, y así con todas las palabras; y lo mismo si es femenino, etc.
tabla tuya
1| aviones
2|embarcaciones
4|acuáticas

tabla nueva
1|1|avión
2|1|aviones
3|2|embarcación
4|2|embarcaciones
5|4|acuático
6|4|acuática
7|4|acuáticos
8|4|acuáticas
9|1|aeroplano
10|1|aeroplanos

Creo que esto sería más fácil que usar expresiones regulares. Haces la búsqueda en el campo de esta segunda tabla (previamente indexado, claro) y luego cruzas con la anterior. Creo que te haces una idea.

Última edición por jurena; 13/01/2010 a las 12:56
  #7 (permalink)  
Antiguo 13/01/2010, 13:30
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Query recursiva en MySql con analisis sintáctico y valoración... nada más!

Cita:
Iniciado por jurena Ver Mensaje
podrías crear una tabla con las formas posibles de las palabras que tienes en tu lista.
El problema que la lista es dinámica, no se lo que contendrá en el futuro, de todas maneras, me he decidido en vez de utilizar bbdd, directamente hago una clase para solucionar el problema ya que en si tengo varios inconvenientes juntos, la idea ronda por lo que comentás, un stopword para evitar palabras irrelavantes, un buscador de sinónimos por palabra, un asignador de peso, considerando la posición en el árbol y un promedio ponderado de los sinónimos, un lexematizador para reducirlas a un patron común de búsqueda.

No es perfecto pero veremos si nos acercamos a una solución, también pense en usar sphinx sobre mysql pero me es importante la posición de la palabra en el árbol, veremos como va sino tiro algúna consulta más.

Muchas gracias.
  #8 (permalink)  
Antiguo 13/01/2010, 15:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Query recursiva en MySql con analisis sintáctico y valoración... nada más!

Suerte, parece un proyecto muy interesante, abcdefghi. ¿No has pensado en usar xml para eso?

Etiquetas: analisis, query
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 10:39.