2010-08-09 15 views
23

Tengo un procedimiento almacenado básico que realiza una búsqueda de texto completo contra 3 columnas en una tabla al pasar un parámetro @Keyword. Funciona bien con una palabra pero se cae cuando trato de pasar más de una palabra. No estoy seguro por qué. El error dice:Usar palabras múltiples en la cadena de entrada de búsqueda de texto completo

error de sintaxis cerca de 'elemento de búsqueda' en la condición de búsqueda de texto completo 'este es un elemento de búsqueda'

SELECT  S.[SeriesID], 
      S.[Name] as 'SeriesName', 
      P.[PackageID], 
      P.[Name]  
FROM  [Series] S 
INNER JOIN [PackageSeries] PS ON S.[SeriesID] = PS.[PackageID] 
INNER JOIN [Package]  P ON PS.[PackageID] = P.[PackageID] 
WHERE CONTAINS ((S.[Name],S.[Description], S.[Keywords]),@Keywords) 
AND (S.[IsActive] = 1) AND (P.[IsActive] = 1) 
ORDER BY [Name] ASC 

Respuesta

34

Usted tendrá que hacer un poco de pre-procesamiento en el parámetro @Keyword antes de pasarlo a la declaración SQL. SQL espera que las búsquedas de palabras clave estén separadas por lógica booleana o rodeadas de comillas. Por lo tanto, si usted está en busca de la frase, que tendrá que estar entre comillas:

SET @Keyword = '"this is a search item"' 

Si desea buscar todas las palabras, entonces tendrá algo así como

SET @Keyword = '"this" AND "is" AND "a" AND "search" AND "item"' 

Para obtener más información, consulte T-SQL CONTAINS syntax, buscando en particular en la sección Ejemplos.

Como nota adicional, asegúrese de reemplazar el carácter de comillas dobles (con un espacio) para no estropear su consulta de texto completo. Consulte esta pregunta para obtener detalles sobre cómo hacerlo: SQL Server Full Text Search Escape Characters?

+0

Gracias. No estoy seguro de por qué la documentación de MSDN que miré no tenía este ejemplo simple, pero extremadamente común. – MikeTeeVee

+0

@Aaron ¿Funciona esto Y el operador si utiliza MATCH en lugar de CONTIENE? Porque no obtengo ninguna salida para AND con la condición MATCH – Raj

+0

¿Cómo buscamos frases que contengan "? Do put put" "o cuál es la sintaxis? – MonsterMMORPG

Cuestiones relacionadas