Ayuda con CONTAINSTABLE

27/01/2005 - 18:27 por josu | Informe spam
hola a todos y todas:

Estoy realizando unas busquedas en una base de datos sql server 2000 y
para sacarlo en forma de ranking. En principio tengo casi todo
perfecto, pero he encontrado una pequeña pega.
Realizo la busqueda en una tabla en la que tengo nombres y apelllidos
de una serie de personas, si deseo realizar la busqueda por el primer
apellido por ejemplo, hago "...left join
containstable(personas,apellido1,'isabout("martinez*")
weihgt(0.8)')... lo cual me devuelve acertadamente todos aquellos q
son martinez, martinez de loquesea etc. Sin embargo, si realizo la
busqueda por martin o garay (por poner unos ejemplos)
que quedaria:
...left join containstable(personas,apellido1,'isabout("martin*")
weihgt(0.8)')...
o
...left join containstable(personas,apellido1,'isabout("garay*")
weihgt(0.8)')...
Me devuelve con mas peso los que se apellidan martinez q martin y
garayzar q garay, me explico?
Alguien sabe como solucionarlo?
Gracias de antemano

Preguntas similare

Leer las respuestas

#1 Maxi
30/01/2005 - 17:56 | Informe spam
Hola, estamos hablando de SqlServer?


"J&JJ" escribió en el mensaje
news:
hola a todos y todas:

Estoy realizando unas busquedas en una base de datos sql server 2000 y
para sacarlo en forma de ranking. En principio tengo casi todo
perfecto, pero he encontrado una pequeña pega.
Realizo la busqueda en una tabla en la que tengo nombres y apelllidos
de una serie de personas, si deseo realizar la busqueda por el primer
apellido por ejemplo, hago "...left join
containstable(personas,apellido1,'isabout("martinez*")
weihgt(0.8)')... lo cual me devuelve acertadamente todos aquellos q
son martinez, martinez de loquesea etc. Sin embargo, si realizo la
busqueda por martin o garay (por poner unos ejemplos)
que quedaria:
...left join containstable(personas,apellido1,'isabout("martin*")
weihgt(0.8)')...
o
...left join containstable(personas,apellido1,'isabout("garay*")
weihgt(0.8)')...
Me devuelve con mas peso los que se apellidan martinez q martin y
garayzar q garay, me explico?
Alguien sabe como solucionarlo?
Gracias de antemano
Respuesta Responder a este mensaje
#2 josu
31/01/2005 - 10:32 | Informe spam
Hola

Pues si, a lo mejor no he sabido explicarme debidamente :(

Vamos a ver, intento explicarme, aunq supongo q no os voy a contar nada
nuevo para vosotros: una de las formas de realizar busquedas full-text
es usando containstable, para aquellos q no os suena :
http://msdn.microsoft.com/library/d...o_3syt.asp

entiendo q mi anterior mensaje es posible q no se entendiese pq no puse
la select al completo pero es q es pelin larga, e intente
simplificarlo, pero veo que lo que consegui fue explicarlo peor... a
ver si ahora consigo hacerme entender. Supongamos q tengo una tabla con
datos de personas con campos para almacenar nombre, apellido1, apellido
2 y codigo (q hara de PK). Ahora supongamos q en esta tabla tengo los
siguientes datos

Codigo Nombre Apellido1 Apellido2
5555 Pedro Martinez Martinez
6666 Juan Martinez de Lecea Perez
7777 Antonio Gomez Perez
8888 Maria Martin Gomez

ahora haria una select para obtener aquellos cuyo primer apellido
tubiese similitudes con martinez:

Select codigo,nombre,apellido1,apellido2 from personas p left join
containstable(personas,apellido1,'isabout("martinez*") weihgt(0.8)') as
consulta on consulta.[key] = p.codigo where not (consulta.rank is null)
order by consulta.rank desc

(Lo pongo desc para q aparezcan primero los q tengan mas ratio de
similitud)

esto me devolveria a las personas de codigo 5555 y 6666, ordenados por
"similitud". El "problema" es que obtiene mas ratio de similitud aque q
se apellida martinez de lecea que el que se apellida martinez. De la
misma manera, si en vez de realizar la busqueda por martinez la
realizase por martin obtendria mas ratio de similitud martinez de lecea
que martinez y martinez que martin.
Me he explicado ahora?
Un saludo y gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida