2009-06-26 11 views
0

J'ai un site Web qui utilise la FTS (recherche de texte intégral) de MS SQL 2008. La recherche fonctionne correctement si l'utilisateur recherche une chaîne avec une apostrophe comme - elle renvoie tous les résultats contenant . Cependant, il ne retournera pas un résultat si l'utilisateur recherche thats, et la base de données stocke c'est.Comment gérer une apostrophe (') dans MS SQL 2008 FTS?

également, idéalement une recherche de que ça devrait également revenir des thats et que, etc.

Quelqu'un sait si le FTS prend en charge, et ce que je peux faire pour l'activer?

WT

Répondre

1

utiliser un paramètre

myCommand.Parameters.AddWithValue("@searchterm", txtSearch.Text.Trim()); 

ce sera gérer par vous, sans aucun tracas. En ce qui concerne cela, c'est et c'est que vous devriez rechercher le mot-clé SOUNDEX. 4GuysfromRolla ont aussi un old article.

mis à jour il y a un grand discours de l'un des membres de l'équipe TFS au sujet de cette here.

le cite:

Daniel est approprié pour la recherche en texte intégral (FTS) n'utilise pas SOUNDEX directement, mais il peut être utilisé en combinaison avec SOUNDEX.
De plus, vous pouvez vouloir passer en revue les liens suivants ainsi que les ci-dessous TSQL exemples de combinaison CONTIENT & SOUNDEX

Vous pouvez regarder certains des algorithmes soundex améliorés ainsi que le Levenshtein algorithme
Vous devriez être en mesure de recherche Google pour trouver d'autres exemples de code, par exemple: 'metaphone soundex « sql server » de recherche de nom floue et je trouve rapidement - « Double metaphone Sounds Great » à http://www.winnetmag.com/Article/ArticleID/26094/26094.html

Vous pouvez télécharger gratuitement le code dans un fichier zip doté de plusieurs fonctions définies par l'utilisateur (UDF) qui implémentent Double Metaphone.

Ci-dessous quelques liens SOUNDEX supplémentaires:
http://www.merriampark.com/ld.htm
http://www.bcs-mt.org.uk/nala_006.htm

(omis pour de pelle)

use pubs  

-- Combined SOUNDEX OR CONTAINS query that 
-- Searches for names that sound like "Michael".  
SELECT 
    au_lname, au_fname 
FROM 
    authors -- returns 2 rows  
WHERE 
    contains(au_fname, 'Mich*') or SOUNDEX(au_fname) = 'M240' 

Merci,
John
SQL Texte intégral Mer rch Blog
http://spaces.msn.com/members/jtkane/

+0

Salut, merci pour les liens. Je n'ai pas compris la partie sur les paramètres - j'utilise un SP auquel je passe déjà des valeurs. Est-ce que c'est ce que vous vouliez dire? –

+0

Oui. Vous pourriez utiliser le SQL inline et vous vous battez pour le guillemet simple, mais en utilisant des paramètres comme je le montre, tous les caractères spéciaux seront passés correctement. - Ajout de plus de contenu concernant SOUNDEX et FTS - – balexandre

+0

Ok, merci - J'ai immédiatement pu résoudre le problème en utilisant DIFFERENCE, qui est une variante de SOUNDEX! Brillant! Merci! Lira également les liens que vous avez envoyés, au cas où il y a quelque chose que je devrais faire attention ... –

Questions connexes