Tengo una duda...a ver si alguien puede ayudarme

26/11/2005 - 00:38 por Sole | Informe spam
Hola grupo, pues tengo una duda ya que he hecho pruebas y no doy con el por
qué me devuelve registros que "creo" que no debería devolver, espero que
ustedes me aclaren un poco este lío si pueden. El problema es con un comodón
en el predicado CONTAINS. Os explico: Tengo los siguientes normbres escritos
debajo y estan en un campo de una tabla que tiene un indice de texto.

LOMBA PONCE JUAN
ALMENO PONTON FRANCISCO
ROMAN PONTE ALMAGRO



Al realizar las consulta SELECT * FROM tabla WHERE CONTAINTS(campoindexado,
'"pont*"')

ROMAN PONTE ALMAGRO
ALMENO PONTON FRANCISCO

Hasta aqui creo que está todo correcto ya que me filtra todos los registros
que contienen la palabra 'pont'

SELECT * FROM tabla WHERE CONTAINTS(campoindexado, '"ponte*"')

LOMBA PONCE JUAN
ALMENO PONTON FRANCISCO
ROMAN PONTE ALMAGRO

Aqui es donde viene mi duda. Por qué me devuelve los 3 registros si lo que
me debería devolver es uno no??



Un saludo y desde ya gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
28/11/2005 - 13:32 | Informe spam
Hola,

Contains permite hacer tanto búsquedas exactas como búsquedas aproximadas,
en tu caso al poner el texto entre comillas dobles estás haciendo búsquedas
aproximadas. Por esto al buscar PONTE te aparece también PONCE (es
aproximada).

Si quieres búsquedas exactas utiliza
SELECT * FROM tabla WHERE CONTAINTS(campoindexado, 'ponte*')

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Sole" <solecvcdARROBAhotmail.com> escribió en el mensaje
news:
Hola grupo, pues tengo una duda ya que he hecho pruebas y no doy con el
por qué me devuelve registros que "creo" que no debería devolver, espero
que ustedes me aclaren un poco este lío si pueden. El problema es con un
comodón en el predicado CONTAINS. Os explico: Tengo los siguientes
normbres escritos debajo y estan en un campo de una tabla que tiene un
indice de texto.

LOMBA PONCE JUAN
ALMENO PONTON FRANCISCO
ROMAN PONTE ALMAGRO



Al realizar las consulta SELECT * FROM tabla WHERE
CONTAINTS(campoindexado, '"pont*"')

ROMAN PONTE ALMAGRO
ALMENO PONTON FRANCISCO

Hasta aqui creo que está todo correcto ya que me filtra todos los
registros que contienen la palabra 'pont'

SELECT * FROM tabla WHERE CONTAINTS(campoindexado, '"ponte*"')

LOMBA PONCE JUAN
ALMENO PONTON FRANCISCO
ROMAN PONTE ALMAGRO

Aqui es donde viene mi duda. Por qué me devuelve los 3 registros si lo
que me debería devolver es uno no??



Un saludo y desde ya gracias anticipadas.


Respuesta Responder a este mensaje
#2 Sole
30/11/2005 - 23:59 | Informe spam
Gracias Salvador por tu respuesta, se me había pasado, ya lo he solucionado,
era el idioma del analizador lingüistico, pensaba que por defecto se creaba
con el idioma neutral. Lo he creado como neutral y ya están solucionados los
problemas.

Sobre lo que has mencionado, en lo Bol pone lo siguiente:

<prefix_term>

Especifica la coincidencia de palabras o frases que comiencen con el texto
especificado. Incluya un término prefijo entre comillas dobles ("") y
agregue un asterisco (*) delante de las comillas de cierre, de modo que se
haga coincidir con cualquier texto que comience que el término sencillo
especificado antes del asterisco. La cláusula debe especificarse de esta
manera: CONTAINS (column, '"text*"') El asterisco representa cero, uno o
varios caracteres (de la palabra raíz o de la palabra de la palabra o la
frase). Si no se delimitan el texto y el asterisco con comillas dobles, como
en CONTAINS (column, 'text*'), la búsqueda de texto considera el asterisco
como un carácter y buscará las coincidencias exactas de text*.

Cuando <prefix_term> es una frase, todas las palabras de dicha frase se
consideran prefijos. Por tanto, una consulta que especifique el prefijo
"local wine*" hace que se devuelvan todas las filas que contengan el texto
"local winery", "locally wined and dined", etc



Yo también pensaba lo mismo que tú pero por las pruebas que he hecho no es
así, ya que si no incluyes las comillas dobles creo que no interpreta el * .
Si filtro por 'pont*' me deberían salir también los que salen por 'ponte*' y
no es así, no me saca nada.



Un saludo y gracias de nuevo.

"Salvador Ramos" escribió en el
mensaje news:
Hola,

Contains permite hacer tanto búsquedas exactas como búsquedas aproximadas,
en tu caso al poner el texto entre comillas dobles estás haciendo
búsquedas aproximadas. Por esto al buscar PONTE te aparece también PONCE
(es aproximada).

Si quieres búsquedas exactas utiliza
SELECT * FROM tabla WHERE CONTAINTS(campoindexado, 'ponte*')

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Sole" <solecvcdARROBAhotmail.com> escribió en el mensaje
news:
Hola grupo, pues tengo una duda ya que he hecho pruebas y no doy con el
por qué me devuelve registros que "creo" que no debería devolver, espero
que ustedes me aclaren un poco este lío si pueden. El problema es con un
comodón en el predicado CONTAINS. Os explico: Tengo los siguientes
normbres escritos debajo y estan en un campo de una tabla que tiene un
indice de texto.

LOMBA PONCE JUAN
ALMENO PONTON FRANCISCO
ROMAN PONTE ALMAGRO



Al realizar las consulta SELECT * FROM tabla WHERE
CONTAINTS(campoindexado, '"pont*"')

ROMAN PONTE ALMAGRO
ALMENO PONTON FRANCISCO

Hasta aqui creo que está todo correcto ya que me filtra todos los
registros que contienen la palabra 'pont'

SELECT * FROM tabla WHERE CONTAINTS(campoindexado, '"ponte*"')

LOMBA PONCE JUAN
ALMENO PONTON FRANCISCO
ROMAN PONTE ALMAGRO

Aqui es donde viene mi duda. Por qué me devuelve los 3 registros si lo
que me debería devolver es uno no??



Un saludo y desde ya gracias anticipadas.






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida