2010-08-09 16 views
23

Ho una procedura di archiviazione di base che esegue una ricerca di testo completo su 3 colonne in una tabella passando un parametro @Keyword. Funziona bene con una parola ma cade quando provo a passare più di una parola. Non sono sicuro del perché. L'errore dice:Utilizzare più parole nella stringa di input di ricerca fullText

Errore di sintassi in prossimità di 'tema' nella condizione di ricerca full-text 'questo è un tema'

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 

risposta

34

Si dovrà fare un po 'di pre-elaborazione sul parametro @Keyword prima di passarlo nell'istruzione SQL. SQL si aspetta che le ricerche di parole chiave siano separate dalla logica booleana o racchiuse tra virgolette. Quindi, se siete alla ricerca per la frase, che dovrà essere tra virgolette:

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

Se si desidera cercare tutte le parole, allora avrete bisogno di qualcosa di simile a

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

Per ulteriori informazioni, vedere T-SQL CONTAINS syntax, cercando in particolare nella sezione Esempi.

Come nota aggiuntiva, assicurarsi di sostituire il carattere di doppia quota (con uno spazio) in modo da non rovinare la query full-text. Vedi questa domanda per i dettagli su come farlo: SQL Server Full Text Search Escape Characters?

+0

Grazie. Non sono sicuro del motivo per cui la documentazione MSDN che ho guardato non avesse questo esempio semplice, ma estremamente comune. – MikeTeeVee

+0

@Aaron Questo operatore AND funziona se si utilizza MATCH invece di CONTAINS? Perché non ottengo alcun output per AND con la condizione MATCH – Raj

+0

Come si cercano le frasi che contengono "? Do we put double" "o qual è la sintassi? – MonsterMMORPG

Problemi correlati