Foros del Web » Programando para Internet » ASP Clásico »

buscador con analizador de palabras -Sonido igual que o palabra más allegada- en sql.

Estas en el tema de buscador con analizador de palabras -Sonido igual que o palabra más allegada- en sql. en el foro de ASP Clásico en Foros del Web. Asi es, tengo un buscador que quisiera hacerlo lo más inteligente posible, pero mis capacidades ya se terminaron, pues sólo me faltaría hacer busquedas donde ...
  #1 (permalink)  
Antiguo 01/12/2005, 09:25
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
buscador con analizador de palabras -Sonido igual que o palabra más allegada- en sql.

Asi es, tengo un buscador que quisiera hacerlo lo más inteligente posible, pero mis capacidades ya se terminaron, pues sólo me faltaría hacer busquedas donde el producto por ejemplo se llama : "Tubo pared delgada" y el usuario por error escribe "tuvo" automaticamente aparecieran las palabras más allegadas. Por ejemplo Tubo ..... algo asi como el corrector ortografico de word.

He intentado con las funciones soundex y difference del sql server pero al parecer no funciona del todo bien, pues en los sonidos en inglesva bien y por lo que lei da resultado correctos con palabras en Ingles.

alguien a desarrollado este tipo de busquedas ???
  #2 (permalink)  
Antiguo 01/12/2005, 13:20
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Una vez, y según yo funciona aceptablemente(regresa una o dos palabras mal, pero nada que sea descabellado)

el código que usé, fue este:

Código:
declare @Proveedor varchar(500)
declare @result int
declare tabla cursor for
select distinct descripcion from catalogos.dbo.proveedores
OPEN tabla
FETCH tabla INTO @Proveedor
WHILE @@FETCH_STATUS =0
BEGIN
    SET @result=(select difference(@Proveedor, 'ABASTECEDORA')) --aquí un parámetro
    if @result > 3
       PRINT @Proveedor --Aquí no iba el print, obiamente, pero la idea es esa
    FETCH tabla INTO @Proveedor
END
CLOSE tabla
DEALLOCATE tabla
  #3 (permalink)  
Antiguo 01/12/2005, 16:25
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 19 años, 6 meses
Puntos: 3
Yo construi un sistema de busquedas utilizando varios componentes y servicios; entre ellos el MS Index Server ; y allí se pueden usar todo ese tipo de busquedas que mencionas.
El Motor de Búsqueda utiliza el método de buscar llamado fuzzy; que consiste en traer Documentos en donde aparecerá el texto ingresado, o bien, traerá todos aquellos Documentos que tengan un texto similar: Por Ejemplo si se busca Cortes, el resultado traerá Documentos que tengan la palabra Cortes, Cortar, Corte, Cortado, etc.
Tambien, usé muchas mas opciones de busqueda ...
  #4 (permalink)  
Antiguo 02/12/2005, 18:19
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 19 años, 8 meses
Puntos: 0
Genera la Siguiente consulta:
buscar=Request.Form("buscar")'mi variable del formulario
Sql="Select * FROM PRODUCTOS WHERE titulo Like '%" &buscar& "%' OR otros_campos Like '%" &buscar& "%' "

Puedes buscar en otro campos, o varios de ellos. Por ejemplo el campo descripcion.

Espero te sirva

Sorry me olvide de los "%%" y del LIKE

Última edición por tomchat; 02/12/2005 a las 18:34
  #5 (permalink)  
Antiguo 02/12/2005, 18:28
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
errr... me parece que orharo2003 está preguntando otra cosa :/
__________________
...___...
  #6 (permalink)  
Antiguo 02/12/2005, 18:33
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 19 años, 8 meses
Puntos: 0
Hay esta la coreccion de mi consulta,de esa manera si filtra.
  #7 (permalink)  
Antiguo 02/12/2005, 18:53
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
mmmhhh...bueno, la funcion difference me parece que es la adecuada como ya lo apunto el master Myak, el problema es que solo reconoce los primeros 8000 bytes, aunque creo que deberia ser mas que suficiente.

En este caso no es suficiente con una consulta like utilizando comodines, lo que pregunta es si tienes esto

arbol
arvol

que haga una busqueda, omitiendo la falta ortografica.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 02/12/2005, 18:59
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 19 años, 8 meses
Puntos: 0
bueno si se puede hacer como dice Myakire, en fin varios caminos conduces a roma por no decir "todos".
  #9 (permalink)  
Antiguo 02/12/2005, 19:03
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Si tomchat, todos te queremos

Salud!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 02/12/2005, 22:16
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por u_goldman
Si tomchat, todos te queremos

Salud!
¿Ne te sientes necesitado de algo más sustancial de vez en cuando?
¿Si?
!Pues hazlo!
Nuestros operadores esperan tu llamado en el foro que ya sabes las 24 horas del día los 365 días del año!!

Llama ya y.... errr... en fin... chau, hasta mañana.
__________________
...___...
  #11 (permalink)  
Antiguo 02/12/2005, 23:01
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
je je je je je, seeeehhhh, pero mejor seamos felices y tomemos unas birritas..!

Salud a todos, ahora si ando con unas de mas..!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 03/12/2005, 09:59
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
Gracias por sus comentarios, tomchat lo que mencionas es lo que ya tenia implementado. Donde por ejemplo tengo los sig. productos en la base de datos :

Cable iusa cal 12
Cable condumex cal 12
Cable comorsa cal 12

Entonces si por ejemplo el usuario pone cable cal 12 regresa los tres mencionado,usando el like%% en cada palabra.

La idea era que si escribia Cavle cal 12 regresara lo mismo. Si sólo escribo una palabra por ejemplo cavle, si me regresaria todo lo de cable, pero necesito que regrese el del cal 12.

En resumen, funciiona bien con sólo una palabra, pero aqui se requiere que tenga varios criterios.

Por el momento lo he dejado como lo tenia.

Gracias por la ayuda a todos.
  #13 (permalink)  
Antiguo 20/12/2005, 12:32
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 21 años
Puntos: 4
investigando un poco, sobre lo que queria que era buscar palabras similares encontre la solución.En realidad no desarrolle ningun algoritmo ni nada, sólo ocupar lo que ya está hecho.

http://www.4guysfromrolla.com/webtech/062402-1.shtml

Espero alguien más le sirva.
  #14 (permalink)  
Antiguo 20/12/2005, 16:55
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Interesante orharo, pero esto es un poco diferente a lo que inicialmente buscabas ¿no?, digo, por que una cosa es que si escribes: "garron", te regrese jarrón o otra es que en lugar de regresarte jarrón te diga que esta mal escrito y te presente alternativas.
La página de www.rae.es, tiene la opción "semejanza fonético-ortográfica", que creía es lo que buscabas. La solución con el SpellingErrors (muy buena por cierto) se parece más a la opción "Búsqueda por aproximación" de la misma página.

Saludos
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 11:24.