Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/05/2010, 21:16
Brian_91
 
Fecha de Ingreso: septiembre-2009
Mensajes: 27
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Motor de busqueda en base a diccionario

Hola, les cuento la situacion tengo un diccionario en la base de datos para ayudar a un motor de busqueda en php, el diccionario tiene los campos id,dicpalabra, dicrelevancia,dictipo el tipo es para identificar categorias y agregar filtros desde php para "una gran sql". El problema es que al escribir palabras con algun error de escritura no encuentro resultados para el filtro.

Para aclarar un poco pongo un ej el usuario busca:
"Casa en punta del este para la venta"

El diccionario tiene:
- casa
- punta del este
- venta

Hasta este momento con mysql identifico los teminos contenidos en la frase así:
Código PHP:
select dicpalabra from diccionario where INSTR("Casa en punta del este para la venta",dicpalabra) >0 order by dicrelevancia DESC 
Esto es bastante efectivo, pero tiene sus defectos al tipear mal una palabra.
Si quisiera usar soundex para corregir haria esto:
Deberia hacer un explode separando por espacios " " y tendria este array:casa , en, punta, del, este, para, la, venta

Pero se me separan las palabras compuestas, "Punta del este" queda "Punta", "del", "este" y el diccionario tiene "punta del este" por lo tanto el soundex de "punta" no es igual de "punta del este" ni "del" y "este".

Algo que funcionaria de maravilla pero no se como hacerlo:
Insertar en la frase el soundex de cada palabra del diccionario y luego hacer el instr con soundex algo asi:

select dicpalabra from diccionario where instr("C000 en P53423 para la V530",soundex(dicpalabra)) >0
Entonces obtendria palabras que tengan el mismo soundex, y solucionaria algunos errores de tipeo

¿Se podria insertar el soundex de cada palabra en la frase sin perder palabras compuestas como Punta del este pero al mismo tiempo corregirlas ?

Desde ya gracias. Saludos !

Última edición por Brian_91; 31/05/2010 a las 21:28