Question

Je voudrais lancer une recherche avec MSSQL moteur plein texte où étant donné l'entrée utilisateur suivant: "Carré Hollywood"

Je veux que les résultats ont à la fois Hollywood et carré [s] en eux.

Je peux créer une méthode sur le serveur Web (C #, ASP.NET) pour produire dynamiquement une instruction SQL comme ceci:

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*"')
AND CONTAINS(TITLE, '"square*"')

Assez facile. Cependant, je voudrais que cela dans une procédure stockée pour bénéficier de la vitesse ajoutée et de la sécurité pour l'ajout de paramètres.

Puis-je avoir mon gâteau et le manger aussi?

Était-ce utile?

La solution

Je suis d'accord avec ci-dessus, regardez dans ET clauses

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*" AND "square*"')

Cependant, vous ne devriez pas avoir à diviser les phrases d'entrée, vous pouvez utiliser la variable

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,@parameter)

par la voie rechercher le terme exact (contient) rechercher un terme dans l'expression (texte libre)

Autres conseils

La dernière fois que je devais le faire (avec MSSQL Server 2005) J'ai fini par déplacer toute la fonctionnalité de recherche vers Lucene (la version Java, bien que Lucene.Net existe maintenant, je crois). J'ai eu de grands espoirs de la recherche en texte intégral, mais ce problème spécifique m'a ennuyé, tellement que j'ai abandonné.

Avez-vous essayé d'utiliser l'opérateur AND logique dans votre chaîne? Je passe dans une chaîne brute à mon sproc et d'autres choses « et » entre les mots.

http://msdn.microsoft.com/en-us/library /ms187787.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top