entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Contains no me devuelve los mismos resultados que like en sql server?

Tengo una tabla con millones de registros, está indexada y funcionando con Full text search, pero hemos encontrados ocasiones en las que nos devuelve resultados erróneos, es decir, que buscamos una palabra y entre los resultados de la select vemos claramente que esa palabra no existe en el campo de la tabla que estamos mirando.

0voto

Peter comentado

¿Y cual es el código? Así sin ver nada va a ser complicado que alguien te diga cual puede ser el problema.

Saludos.

0voto

fararaju comentado

Las sentencias son:
Con CONTAINS:

  SELECT campo1
  FROM  Tabla 
  WHERE 
  CONTAINS(Tabla.campo1, 'ciudad')  
  ORDER BY campo  DESC OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY ;

Con LIKE:

  SELECT campo1
  FROM  Tabla 
  WHERE 
  Tabla.campo1 like '%ciudad%'  
  ORDER BY campo  DESC OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY ;

Realmente el problema es que con Contains me devuelve resultados cuando no existe la palabra 'ciudad' en el campo Campo1. Acabo de ver que no me da los mismos resultados si pongo 'CIUDAD' que si pongo 'Ciudad' con CONTAINS.

Gracias!!

0voto

fararaju comentado

En realidad la palabra que buscaba era 'farderos' y parece ser que es por el tema de las terminación, es decir, el 'os', porque si busco 'farder' me devuelve los resultados correctamente. He revisado que no hay ningún fichero de Stoplist o Stopwords, y cuando ejecuta la sentencia directamente en SQL Server le pongo:

ALTER FULLTEXT INDEX ON Tabla SET STOPLIST = OFF
SELECT campo1
  FROM  Tabla 
  WHERE 
  CONTAINS(Tabla.campo1, 'farderos')  
  ORDER BY campo  DESC OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY ;
ALTER FULLTEXT INDEX ON Tabla SET STOPLIST = SYSTEM

Pero nada, no me funciona correctamente.
¿Alguien sabe como comprobar si están las stopwords activadas para confirmar que es por eso el error?

1voto

carlossevi comentado

¿Y el texto se parece aunque no sea exactamente "ciudad"? Según la documentación de CONTAINS:

Busca coincidencias precisas o aproximadas (menos precisas) de
palabras o frases, palabras que se encuentran a cierta distancia de
otra o coincidencias ponderadas en SQL Server.

0voto

fararaju comentado

Q va, no se parece en nada, en lugar de ciudad, contemplar 'farderos', que parece un ejemplo más claro, porque si quito la terminación 'os', me funciona correctamente.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta