Je fais une requête MS SQL Server Full Text Search. J'ai besoin d'échapper des caractères spéciaux pour pouvoir rechercher un terme spécifique contenant des caractères spéciaux. Y at-il une fonction intégrée pour échapper une chaîne de recherche de texte intégral? Si non, comment le feriez-vous?SQL Server Recherche plein texte Rechercher des caractères d'échappement?
Répondre
Mauvaise nouvelle: il n'y a aucun moyen. Bonne nouvelle: vous n'en avez pas besoin (cela ne va pas aider de toute façon).
J'ai fait face à un problème similaire sur l'un de mes projets. Je crois comprendre que tout en construisant index de texte intégral, SQL Server traite tous les caractères spéciaux comme délimiteurs et donc:
- Votre mot avec un tel caractère est représenté par deux (ou plus) mots index de texte intégral.
- Ces caractères sont supprimés et n'apparaissent pas dans un index.
Tenez compte, nous avons le tableau ci-dessous avec un index de texte intégral correspondant pour (ce qui est sauté):
CREATE TABLE [dbo].[ActicleTable]
(
[Id] int identity(1,1) not null primary key,
[ActicleBody] varchar(max) not null
);
Considérez plus tard, nous ajouter des lignes à la table:
INSERT INTO [ActicleTable] values ('digitally improvements folders')
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)')
Essayez une recherche:
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digitally')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improvements')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'folders')
et
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digital')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improve')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'fold')
Le premier groupe de conditions correspondra à la première ligne (et non à la seconde) tandis que le second groupe correspondra uniquement à la deuxième ligne.
Malheureusement, je ne pouvais pas trouver un lien vers MSDN (ou quelque chose) où un tel comportement est clairement indiqué. Mais j'ai trouvé un official article qui indique comment convertir les guillemets pour les requêtes de recherche en texte intégral, ce qui est [implicitement] aligné avec l'algorithme décrit ci-dessus.
- 1. Recherche plein texte SQL
- 2. recherche plein texte vista
- 3. recherche plein texte en utilisant sql server 2008
- 4. Recherche plein texte pour plusieurs tables dans SQl Server 2005
- 5. postgres recherche plein texte
- 6. Recherche plein texte CONTAINSTABLE
- 7. Sql Server recherche plein texte - Obtenir des occurrences de mot/emplacement dans le texte?
- 8. Recherche plein texte SQL avec des colonnes de clé étrangères
- 9. Recherche plein texte sur une table
- 10. SQl La recherche plein texte ne fonctionne pas?
- 11. texte intégral SQL Server Recherche
- 12. Recherche plein texte dans LINQ
- 13. Recherche plein texte MySQL sur plusieurs tables
- 14. recherche plein texte pour l'ensemble de données
- 15. recherche plein texte erreur de procédure stockée
- 16. Recherche plein texte avec Firebird et Delphi
- 17. mysql recherche plein texte avec des colonnes nulles
- 18. SQL Server "Facultatif" Recherche FreeText
- 19. Comment faire une recherche plein texte dans Cocoa?
- 20. Recherche plein texte MySQL pour les entités html
- 21. Qu'est-ce que la recherche plein texte vs LIKE
- 22. MySQL Recherche plein texte et score pas de résultat
- 23. Recherche dans des champs de texte intégral dans SQL Server pour détecter le plagiat
- 24. Classement de la recherche de texte intégral (SQL Server)
- 25. Requête SQLite - Besoin d'aide pour la recherche plein texte
- 26. recherche en texte intégral sur XML dans SQL Server 2008
- 27. Fonctionnalité "ressemble à un son", "vouliez-vous dire" utilisant la recherche plein texte dans SQL Server 2005
- 28. Rechercher du texte dans des fichiers (C#)
- 29. Recherche plein texte de PostgreSQL et de MySQL
- 30. Comment désactiver le mot stemming dans la recherche de texte intégral dans SQL Server?