2010-08-27 5 views
3

Je voudrais savoir comment exclure les apostrophes de l'indexation en recherche plein texte. Par exemple, si quelqu'un entre un terme de recherche pour «orien» ou «obrien», je voudrais qu'il corresponde à tous les cas où le nom de quelqu'un correspond à «O'Brien» ou «OBrien».Exclure les apostrophes de SQL Server Recherche plein texte

Cependant, si je recherche sur:

select * from MyTable where contains (fullName, '"o''Brien*"') 

Il retourne seulement ceux avec une apostrophe. Mais si je fais:

select * from MyTable where contains (fullName, '"oBrien*"') 

Il renvoie uniquement ceux sans apostrophe. En bref, je veux savoir s'il est possible que FTS indexe "O'Brien" et "OBrien" comme "obrien" afin que je puisse trouver les deux.

Alors que la solution:

select * from MyTable where contains (fullName, '"oBrien*" OR "o''Brien*"') 

fonctionnerait, cependant, je ne peux pas faire cette hypothèse si l'utilisateur est entré dans "obrien".

Je suis à la recherche d'une solution qui fonctionne à la fois sur SQL Server 2005 et 2008.

+0

Version de SQL Server? (FTS a beaucoup changé entre 2005 et 2008) –

+0

Copie possible de http://stackoverflow.com/questions/676019/apostrophes-and-sql-server-ft-search –

+0

La dupe possible est spécifique à SQL 2005. –

Répondre

0

en fonction de la quantité d'espace que vous avez, vous pouvez ajouter une autre colonne

fullName_noPunctuation

contenant uniquement les caractères alphabétiques du nom, supprime la ponctuation de vos critères de recherche et recherche la colonne sans ponctuation à la place.

+0

Cela peut fonctionner pour moi. Je vais devoir regarder dedans. Cependant, il serait plus agréable s'il y avait un moyen de l'indexer juste "O'Brien" et "OBrien" comme "obrien". – Avrom

+0

Ajout d'une nouvelle colonne avec le "fullName" dépouillé de ses apostrophes et créé un index FTS dessus. Il a été capable de trouver à la fois les O'Briens et les Obriens en utilisant un contenu (fullSearch, '' obrien * ''). – Avrom

Questions connexes