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

buscador ASP problemilla

Estas en el tema de buscador ASP problemilla en el foro de ASP Clásico en Foros del Web. tengo un buscador y solo me busca por una palabra o por frase exacta... abria alguna forma para que la busqueda fuera por palabras ,, ...
  #1 (permalink)  
Antiguo 26/05/2004, 11:27
 
Fecha de Ingreso: mayo-2004
Mensajes: 9
Antigüedad: 21 años
Puntos: 0
buscador ASP

tengo un buscador y solo me busca por una palabra o por frase exacta... abria alguna forma para que la busqueda fuera por palabras ,, por ejemplo: ponemos "mineria madrid" y que te busque tanto por "mineria" como por "madrid"

Un saludo y todos y gracias de antemano

Última edición por jacks2; 28/05/2004 a las 08:24
  #2 (permalink)  
Antiguo 26/05/2004, 11:51
 
Fecha de Ingreso: mayo-2004
Mensajes: 9
Antigüedad: 21 años
Puntos: 0
esto es lo que tengo

<%
Dim casa
casa = "1"
if (Request.QueryString("palabras") <> "") then casa= Request.QueryString("palabras")
%>

<%
set casa1 = Server.CreateObject("ADODB.Recordset")
casa1.ActiveConnection = MM_portal1_STRING
casa1.Source = "SELECT * FROM tabla1 WHERE UCase(campo2) LIKE '%" + UCase(Replace(casa, "'", "''")) + "%' OR UCase(campo3) LIKE '%" + UCase(Replace(casa, "'", "''")) + "%' OR UCase(campo4) LIKE '%" + UCase(Replace(casa, "'", "''")) + "%' ORDER BY info ASC"
casa1.CursorType = 0
casa1.CursorLocation = 2
casa1.LockType = 3
casa1.Open()
casa1_numRows = 0
%>
  #3 (permalink)  
Antiguo 26/05/2004, 15:23
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 23 años, 4 meses
Puntos: 3
es suficiente esto

strSQL = "select * from tabla where info like '%"&Request.QueryString("palabras")&"%'"
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #4 (permalink)  
Antiguo 26/05/2004, 18:43
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
Siento llevarte la contraria mamon pero eso no vale.

Imaginate que tienes algo en un campo asi:
campo2="juan perez fernandez"

Si tu tecleas juan fernadez no te devolvera ningun resultado puesto que el busca la cadena "juan(espacio)fernandez" y no ambas palabras por separado.

lo que necesita es una pequeña funcion que detecte el espacio entre palabras y haga tantas consultas a la base de datos como palabras existan, memorizando el grado de coincidencia.

Personalmente yo tambien intente una vez hacer algo asi y al final desisti no di con la solucion, pero aprovechando este tema a ver si alguien nos da un poco de luz.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #5 (permalink)  
Antiguo 31/05/2004, 08:35
 
Fecha de Ingreso: mayo-2004
Mensajes: 9
Antigüedad: 21 años
Puntos: 0
nadie sabe como hacerlo.... por que no tengo yo ni idea.. hecharme una mano porf avor
  #6 (permalink)  
Antiguo 31/05/2004, 09:11
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 21 años, 7 meses
Puntos: 0
Hola Jacks2,
mira yo tambien estoy intentado hacer un buscador por palabras, es decir como tu describes.
A raiz de tu codigo yo he realizado este. Quiza te pueda servir.
Faltaría pulirlo, me refiero a detectar por ejemplo que el usuario no ponga campos en blanco etc.
Es secreto está en la SQL, si alguien supiese realizar la query sin hacer el bucle seria perfecto.
Bueno aqui te dejo el codigo que he desarrollado,lo he probado y si que funciona.
El tema se complica cuando se quiere ver varios campos de una tabla. pero bueno solamente seria cuestion de añadirlos....

Código:
 

connString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("bd.mdb")
Set conexion=CreateObject("ADODB.Connection")
conexion.Open connString
categorias=Request.QueryString("cat")
' convierto el string en una cadena separada por ;
categoriastemp = replace(categorias, " ",";")
' la convieto en array
categoriasArray = split(categoriastemp,";")
' empoezo a crear la SQL
cadena_SQL="SELECT * FROM tablawhere"
 for i=0 to ubound(categoriasArray)
  if i=0 then
   cadena_SQL = cadena_SQL & " Ucase(campo1) LIKE'%"&Ucase(categoriasArray(i))&"%'"
  else 
   cadena_SQL = cadena_SQL & " or Ucase(campo1) LIKE'%"&(categoriasArray(i))&"%'"
  end if
 next
 Set registros=conexion.Execute(cadena_SQL)
Salu2
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #7 (permalink)  
Antiguo 01/06/2004, 03:38
 
Fecha de Ingreso: mayo-2004
Mensajes: 9
Antigüedad: 21 años
Puntos: 0
muchas gracias Motki
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 06:38.