Utilisez plusieurs mots dans la chaîne de saisie de recherche FullText
j'ai stocké la procédure de base qui effectue une recherche en texte intégral contre 3 colonnes dans un tableau en passant dans un paramètre @Keyword
. Il fonctionne très bien avec un mot, mais tombe quand j'essaie de passer dans plus d'un mot. Je ne sais pas pourquoi. L'erreur dit:
erreur de Syntaxe près de 'élément de recherche" dans le texte intégral de la condition de recherche "c'est un élément de recherche'
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
1 réponses
vous devrez faire un pré-traitement sur votre paramètre @Keyword avant de le passer dans la déclaration SQL. SQL s'attend à ce que les recherches par mots-clés soient séparées par une logique booléenne ou entourées de guillemets. Donc, si vous cherchez la phrase, elle devra être entre guillemets:
SET @Keyword = '"this is a search item"'
Si vous voulez rechercher tous les mots, alors vous aurez besoin de quelque chose comme
SET @Keyword = '"this" AND "is" AND "a" AND "search" AND "item"'
pour plus d'informations, voir le T-SQL Contient la syntaxe , en regardant en particulier la section exemples .
comme note supplémentaire, assurez-vous de remplacer le caractère double-citation (avec un espace) de sorte que vous ne gâchez pas votre requête en texte intégral. Voir cette question pour plus de détails sur la façon de faire cela: SQL Server caractères D'échappement de recherche plein texte?