/*Créer un environnement de test
WINXP(SP3)+SQL SERVER2005(SP3)*/
si object_id('tb') n'est pas nul
supprimer la table tb
aller
créer une table tb
(id int identité(1,1),
titre varchar(200),
détail varchar(1000),
contrainte pk_id clé primaire (id) – requise lors de la création d'un index de texte intégral
)
insérer dans la tuberculose
sélectionnez « Les Rockets sont sur le point de signer un jeu de tir rookie ». Il est rapporté que les négociations contractuelles entre Budinger et les Rockets se sont terminées hier et que Budinger obtiendra le même contrat que Taylor. Auparavant, les médias avaient révélé que le contrat de Taylor durait quatre ans et valait un total de 10 000 dollars américains, dont les deux premières années étaient des contrats garantis. Budinger devrait annoncer officiellement sa signature pour rejoindre les Rockets dans les prochains jours. '
syndicat tous
select 'Weaver a révélé avoir signé un contrat avec les géants grecs', 'Selon International Basketball Network, l'ancien joueur des Rockets Van Weaver a signé un contrat avec les géants grecs Olympiacos. Weaver a reçu un contrat de deux ans d'une valeur de 10 000 $. '
syndicat tous
select 'Les Spurs ont dépensé beaucoup d'argent pour lutter contre les Lakers', 'Les Spurs ont ajouté plusieurs généraux au cours de cette intersaison estivale. L'entraîneur-chef Greg Veach a récemment révélé dans une interview avec Yahoo Sports que les Spurs n'avaient pas hésité à payer le prix. taxe de luxe pour construire un bâtiment luxueux. L'alignement est conçu pour combattre les Lakers et lutter pour un cinquième championnat. '
syndicat tous
select "Wallace n'a jamais pensé à quitter Motor City", "Ben Wallace a accepté de retourner chez les Detroit Pistons et a signé un contrat de 10 000 $ par an avec les Pistons au salaire minimum du vétéran. Selon le Daily Herald", le chroniqueur Mick. McGraw a révélé que le joueur défensif intérieur qui dominait la NBA à cette époque n'avait même jamais envisagé de quitter les Pistons. '
syndicat tous
select 'Miller est si doué pour se battre pour l'amour et poursuivre sa femme', 'Pour ces "postérieurs" qui n'ont jamais vu Reggie Miller créer "Miller Time" avec les Pacers, comment devrions-nous présenter cette ancienne star de la NBA ? Cela pourrait-il commencer avec la banderole tirée par un avion au-dessus de Malibu Beach à Los Angeles avant-hier ? Je crains qu'aucun parent ne soit disposé à faire cela. '
syndicat tous
sélectionnez « Yao Ming : je n'ai pas traité Shanghai comme un projet d'investissement, mais j'étais heureux de faire des affaires comme une bonne personne. », « Yao Mi » a déclaré : Yao Ming, qui ne manque pas d'effets publicitaires, a acquis le Le Shanghai Oriental Basketball Club, qui est au bord de l'extinction, montre qu'il veut vraiment gagner sa vie pour l'ancien. L'équipe mère fait quelque chose. '
syndicat tous
sélectionnez « Les Rockets ont perdu contre les Wizards pour mettre fin au record de l'année », « La combinaison Yao-Mai était en mauvaise forme dans cette campagne. Yao Ming a marqué un rebond et un blocage sur un tir, et McGrady a marqué un rebond et une passe décisive. un tir. Les deux ont fait équipe pour obtenir un rebond. Jamieson a obtenu deux passes décisives et deux blocs. '
Étape 1 : Activer l'indexation en texte intégral de la base de données
sp_fulltext_database activate --Activer l'indexation en texte intégral de la base de données
aller
Étape 2 : Créer un catalogue de texte intégral
créer un catalogue de texte intégral tb_fulltext
dans le chemin N'D:Program FilesMicrosoft SQL Server2005MSSQL.1MSSQLFTData'
with accent_sensitivity =on -- distinguer les accents
autorisation dbo ; - le propriétaire du catalogue de texte intégral
Étape 3 : Créer un index de texte intégral
créer un index de texte intégral sur TB
(titre, détail)
key index pk_id --Spécifiez la colonne d'index Afin d'améliorer les performances, il est préférable d'utiliser un index clusterisé.
sur tb_fulltext
with change_tracking auto -- Met automatiquement à jour l'index de texte intégral lorsque les données sont modifiées dans la table associée.
Étape 4 : Exemple de requête :
sélectionnez * dans la tuberculose
où contient ((titre, détail), 'Yao Ming')
Syntaxe de requête :
1. Rechercher des mots spécifiques : contient (détail, "Yao Ming")
2. Recherchez une phrase spécifique : utilisez "" pour mettre la phrase entre guillemets doubles, contient (détail, 'Yao Ming Shanghai')
3. Recherchez des mots et des expressions dans plusieurs colonnes : contient ((titre, détail), 'Yao Ming Shanghai')
4. Recherchez des mots ou des expressions commençant par le texte spécifié : contient(détail,'"Yao Ming*"')
Si le texte et l'astérisque ne sont pas placés entre guillemets, la recherche en texte intégral traitera l'astérisque comme un seul caractère. Si la recherche porte sur une expression, chaque mot de l’expression est considéré comme un préfixe. contain(detail,'"Yao Ming Shanghai*"') renverra les résultats où le premier mot commence par Yao Ming et le deuxième mot commence par Shanghai
5. Recherchez des variantes de mots spécifiques : contient (détail, 'formsof (inflexion, ride)')
Renvoie les lignes contenant ride, rides, riding, rided dans le tableau
6. Recherchez des mots ou des expressions proches d'un autre mot ou d'une autre expression : contient (détail, "Yao Ming près de Shanghai")
7. Mots ou expressions qui utilisent des valeurs pondérées : contient (description, 'isabout (poids de performance (.8), poids confortable (.4), poids lisse (.2))')
Le poids attribue une valeur de pondération comprise entre 0,0 et 1,0 à chaque mot ou expression.
8. Utilisez plusieurs conditions de recherche : contient (détail, '"Yao Ming" ou "Shanghai"')
contient(détail,'"Yao Ming" et "Shanghai"')
contient(détail,'"Yao Ming" et non "Shanghai"')
9. Vous pouvez également utiliser des variables dans contain
10. La recherche de synonymes contient(titre,'formsof(thesaurus,on)')
【test】
Dans l'exemple ci-dessus, exécutez
sélectionnez * dans la tuberculose
où contient(titre,'Shanghai')
résultat:
détail du titre de l'identifiant
6 Yao Ming : Il ne considérait pas Shanghai comme un projet d'investissement. Il était heureux d'être un bon homme d'affaires et est devenu une bonne personne. « Yao Mi » a déclaré : Yao Ming, qui ne manque pas d'effet publicitaire, a acquis le Shanghai Oriental. Basketball Club, qui était sur le point de disparaître, ce qui montre qu'il veut vraiment faire quelque chose pour son ancienne équipe mère.
Mais exécutez :
sélectionnez * dans la tuberculose
où contient (titre, '上')
Le résultat est un ensemble vide.
Raison : lors de l'exécution d'une requête d'index de texte intégral, « 上 » est un mot d'interférence en chinois simplifié, c'est-à-dire qu'il sera ignoré lors de la requête. De plus, lors de l'établissement d'un index de texte intégral, une expression est généralement utilisée comme ; un élément d'index au lieu d'un seul mot.
Si vous souhaitez refaire cette requête et connaître les résultats de la première requête, vous pouvez modifier le thésaurus de l'index de texte intégral.
Le chemin où se trouvent les fichiers de mots parasites et de synonymes :
D:Program FilesMicrosoft SQL Server2005MSSQL.1MSSQLFTData Chaque nom de fichier doit être facilement identifiable.
Voici une brève introduction sur la façon de modifier le thésaurus :
1. Utilisez le Bloc-notes pour ouvrir tschs.xml, qui est une bibliothèque de synonymes pour le chinois simplifié.
<XML ID="Thésaurus de recherche Microsoft">
<!-- Commenté
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<extension>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansion>
<remplacement>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</remplacement>
<extension>
<sub>exécuter</sub>
<sub>faire du jogging</sub>
</expansion>
</thésaurus>
-->
</XML>
expliquer:
<remplacement>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</remplacement>
est un mot de remplacement, c'est-à-dire que lors de l'interrogation de W2K, il sera automatiquement remplacé par Windows 2000 pour l'interrogation.
<extension>
<sub>exécuter</sub>
<sub>faire du jogging</sub>
</expansion>
Il s'agit d'une bibliothèque de synonymes, c'est-à-dire que lors de l'exécution de la requête, jog sera également recherché.
Dans cet exemple, ajoutez :
<extension>
<sub>En haut</sub>
<sub>Shanghai</sub>
</expansion>
2. Supprimez la ligne de commentaire commençant à la fin :
<!-- Commenté
-->
3. Le résultat final est :
<XML ID="Thésaurus de recherche Microsoft">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<extension>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansion>
<remplacement>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</remplacement>
<extension>
<sub>exécuter</sub>
<sub>faire du jogging</sub>
</expansion>
<extension>
<sub>En haut</sub>
<sub>Shanghai</sub>
</expansion>
</thésaurus>
</XML>
3. Exécutez l'instruction de requête :
sélectionnez * dans la tuberculose
où contient(titre,'formsof(thesaurus,on)')
Vous pouvez voir que les résultats de la requête sont les mêmes que ceux de contain(title,'Shanghai')