Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Implémentation de la recherche en texte intégral dans SQL Server 2016 pour les débutants

Cet article parle de la recherche en texte intégral et de sa mise en œuvre pour les débutants.

De plus, les lecteurs connaîtront les éléments importants pour que la recherche en texte intégral fonctionne correctement.

Cet article souligne également l'importance d'utiliser la recherche en texte intégral pour faire correspondre les modèles de texte et répondre à des types d'exigences similaires.

À propos de la recherche en texte intégral

Comprenons la recherche en texte intégral à l'aide de définitions.

Définition simple

La recherche en texte intégral est utilisée pour rechercher de manière optimale des données basées sur des caractères afin d'obtenir des réponses rapides.

Définition Microsoft

La recherche en texte intégral dans SQL Server et Azure SQL Database (version cloud de la base de données SQL) permet aux utilisateurs et aux applications d'exécuter des requêtes en texte intégral sur des données basées sur des caractères dans des tables SQL Server.

Qu'est-ce qu'une requête en texte intégral ?

Une requête de texte intégral est un type spécial de requête qui est écrite et exécutée sur des colonnes contenant des données textuelles pour rechercher des modèles de données. Pour cette question, la recherche en texte intégral doit être activée pour ces colonnes.

Compatibilité

La recherche en texte intégral est compatible avec les versions suivantes de SQL Server :

  1. SQL Server 2005 et supérieur
  2. Base de données SQL Azure

Version moderne de la recherche en texte intégral

Dans les versions récentes de SQL Server telles que SQL 2016, la recherche en texte intégral peut être installée avec la recherche sémantique.

Recherche en texte intégral – SQL Server en option

N'oubliez pas que la recherche de texte intégral n'est pas installée par défaut lorsque vous installez SQL Server. Vous devez éventuellement l'installer en ajoutant d'autres fonctionnalités à votre instance SQL actuelle à l'aide de la configuration que vous avez utilisée à l'origine pour installer votre serveur SQL.

Recherche en texte intégral – Base de données par défaut

Toutes les bases de données SQL sont prêtes à être utilisées avec la recherche en texte intégral par défaut. Aucune installation supplémentaire n'est nécessaire, à l'exception des exigences préalables à l'utilisation de la recherche en texte intégral dans une base de données SQL.

Sensibilité à la casse

Selon la documentation Microsoft, la recherche en texte intégral n'est pas sensible à la casse, de sorte que les mots "panneau de configuration", "panneau de configuration" et "panneau de configuration" sont tous traités de la même manière.

Configurer la recherche en texte intégral

Comme mentionné, vous devez ajouter la recherche en texte intégral en tant que fonctionnalité à votre installation SQL Server existante en utilisant le même fichier d'installation que celui que vous avez utilisé pour installer SQL Server.

Exécuter le programme d'installation SQL

Commencez par exécuter le programme d'installation de SQL Server. Il vous donne la possibilité de monter en tant que lecteur si vous préférez exécuter directement le programme d'installation plutôt que de l'enregistrer.

Exécuter le fichier de configuration

Cliquez sur le fichier Setup.exe pour exécuter l'installation de SQL Server :

Ajouter en tant que fonctionnalité

Dès que vous exécutez le fichier d'installation, certaines vérifications initiales seront effectuées. Une fois ces vérifications passées, vous devez sélectionner "ajouter des fonctionnalités à une option d'installation existante" sous la barre de navigation Installation (section) :

Choisissez votre serveur actuel

Ensuite, choisissez votre serveur actuel/potentiel pour lequel vous allez installer la recherche en texte intégral. Dans notre cas, il s'agit de SQL 2016 :

Sélectionnez la fonctionnalité d'instance à ajouter

Ensuite, sélectionnez les extractions de texte intégral et sémantiques pour la recherche fonctionnalité à ajouter (si vous ajoutez cette fonctionnalité pour les anciennes versions de SQL, les extractions sémantiques peuvent ne pas être affichées) :

Veuillez noter que puisque j'ai déjà ajouté cette fonctionnalité avant la procédure pas à pas, elle apparaît grisée sur la capture d'écran. Mais pour quiconque l'ajoute pour la première fois, il sera actif et pourra être installé, ce qui prend un peu de temps.

Vérifier l'état de l'installation de la recherche en texte intégral

Une fois la recherche en texte intégral installée, vous pouvez la vérifier en exécutant le script T-SQL suivant sur la base de données principale :

-- Is Full-Text Search installed then 1 or 0

SELECT fulltextserviceproperty('IsFulltextInstalled') as [Full-Text Search]

Une fois que vous avez installé avec succès la recherche en texte intégral, vous verrez "1" signifiant que le script est en cours d'exécution :

Recherche de mots et d'expressions à l'aide de la recherche en texte intégral

Nous allons maintenant effectuer quelques opérations de recherche de base pour des mots et des expressions à l'aide de la recherche en texte intégral.

Configurer une base de données exemple

Pour comprendre l'utilisation de base de la recherche en texte intégral, configurons un exemple de base de données appelé SQLDevBlogV6 comme suit :

-- Create sample database (SQLDevBlogV6)

CREATE DATABASE SQLDevBlogV6;

GO





USE SQLDevBlogV6;



-- (1) Create Article table in the sample database

CREATE TABLE [dbo].[Article] (

[ArticleId] INT IDENTITY (1, 1) NOT NULL,

[Category] VARCHAR (50) NULL,

[Author] VARCHAR (50) NULL,

[Title] VARCHAR (150) NULL,

[Published] DATETIME2 (7) NULL,

[Notes] VARCHAR (400) NULL,

CONSTRAINT [PK_Article] PRIMARY KEY (ArticleId)

);



GO



-- (2) Populate the table with data

SET IDENTITY_INSERT [dbo].[Article] ON

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (1, N'Development', N'Atif', N'Introduction to T-SQL Programming ', N'2017-01-01 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (2, N'Testing', N'Peter', N'Database Unit Testing Fundamentals', N'2017-01-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (3, N'DLM', N'Sadaf', N'Database Lifecycle Management for beginners', N'2017-01-20 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (4, N'Development', N'Peter', N'Common Table Expressions (CTE)', N'2017-02-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (5, N'Testing', N'Sadaf', N'Manual Testing vs. Automated Testing', N'2017-03-20 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (6, N'Testing', N'Atif', N'Beyond Database Unit Testing', N'2017-11-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (7, N'Testing', N'Sadaf', N'Cross Database Unit Testing', N'2017-12-20 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (8, N'Development', N'Peter', N'SQLCMD - A Handy Utility for Developers', N'2018-01-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (9, N'Testing', N'Sadaf', N'Scripting and Testing Database for beginners ', N'2018-02-15 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (10, N'Development', N'Atif', N'Advanced Database Development Methods', N'2018-07-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (11, N'Testing', N'Sadaf', N'How to Write Unit Tests for your Database', N'2018-11-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (12, N'Development', N'Peter', N'Database Development using Modern Tools', N'2018-12-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (13, N'DLM', N'Atif', N'Designing, Developing and Deploying Database', N'2019-01-01 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (14, N'DLM', N'Peter', N'How to Apply Database Lifecycle Management', N'2019-02-10 00:00:00', NULL)

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (15, N'Testing', N'Saqib', N'SQL Unit Testing Stored Procedures', N'2019-03-10 00:00:00', NULL)

SET IDENTITY_INSERT [dbo].[Article] OFF

Phrases et mots

Voyons plus d'expressions et de mots dans le contexte de la recherche en texte intégral. Cela vous donnera une meilleure idée de ce que vous recherchez via la recherche en texte intégral.

La déclaration "Introduction à T-SQL " est une phrase et "introduction ” et “T-SQL ” sont les mots qui nous intéressent.

Étapes pour implémenter la recherche en texte intégral dans SQL Server

Une recherche en texte intégral est mise en œuvre de la manière suivante :

  1. Créer un catalogue de texte intégral (pour stocker les index de texte intégral).
  2. Définir l'index de texte intégral sur la table ou la vue indexée.
  3. Exécutez des requêtes de recherche en texte intégral en utilisant CONTAINS ou FREETEXT pour rechercher des mots et des expressions.

Créer un catalogue de texte intégral

Ainsi, la base de données exemple (SQLDevBlogV6) a été créée et remplie avec succès. La création d'un catalogue de texte intégral est la première étape de la mise en œuvre de la recherche de texte intégral.

Accédez à Explorateur d'objets dans SQL Server, développez Bases de données node, puis cliquez sur SQLDevBlogV6.

Cliquez sur Stockage , puis cliquez sur Catalogues de texte intégral, puis cliquez sur Nouveau catalogue de texte intégral :

Entrez le nom du catalogue en tant que DevBlogCatalog, Cliquez sur OK :

Le catalogue de texte intégral nouvellement créé se présente comme suit :

Définir un index de texte intégral sur la table

Clic droit sur les articles table, Cliquez sur Index du texte intégral, puis cliquez sur Définir l'index de texte intégral comme indiqué ci-dessous :

Cela déclenchera l'assistant d'indexation de texte intégral. Cliquez sur Suivant , puis cliquez sur Suivant à nouveau après s'être assuré que la clé primaire de la table est présélectionnée par l'assistant.

À l'étape suivante, sélectionnez le Titre colonne pour les requêtes de texte intégral. Il s'agit de la colonne sur laquelle nous allons exécuter nos requêtes de texte intégral :

Ensuite, sélectionnez l'option par défaut pour automatiser le suivi des modifications en sélectionnant Automatiquement option (sauf si vous souhaitez sélectionner une autre option) comme indiqué ci-dessous :

À l'étape suivante, choisissez le catalogue de texte intégral (DevBlogCatalog) à associer à l'index de texte intégral que vous avez défini précédemment dans cette procédure pas à pas. Cliquez ensuite sur Suivant après avoir choisi les options par défaut comme indiqué ci-dessous :

Cliquez sur Suivant et ignorez l'étape facultative, puis cliquez sur Terminer pour voir que l'index de texte intégral a été créé avec succès.

Nous pouvons maintenant exécuter des requêtes de texte intégral sur le Titre colonne du tableau Article grâce à l'activation de la recherche en texte intégral.

Rechercher des tests de mots à l'aide de la requête en texte intégral

Nous pouvons maintenant rechercher rapidement des mots en utilisant le CONTIENT mot-clé (prédicat) en écrivant le script T-SQL suivant :

-- Search for the Word Testing using Full-Text Query

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Les résultats pour rechercher les Tests mot dans le Titre colonne sont les suivantes :

Veuillez noter que vous pouvez obtenir les mêmes résultats en utilisant l'opérateur Like sans recherche en texte intégral. La différence est lorsque vous exécutez cette requête sur des millions et des millions de lignes et c'est à ce moment que l'opérateur LIKE se débat. Pendant ce temps, CONTAINS est beaucoup plus rapide selon les experts.

Rechercher une expression pour les débutants à l'aide de la requête en texte intégral

Retrouvons tous les articles où la phrase "pour les débutants" est utilisé dans le titre. Cela aidera les débutants à démarrer rapidement.

Cette fois, nous utilisons le FREETEXT mot-clé (Prédicat). Il nous fournira tous les articles pour débutants en utilisant le script T-SQL suivant :

-- Search for Phrase: for beginners using Full-Text Query

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

Le résultat est le suivant :

Félicitations, vous avez appris avec succès les bases de la recherche en texte intégral. Vous avez également acquis une expérience pratique de la configuration et de l'exécution de requêtes de recherche en texte intégral pour des mots et des expressions.

Restez en contact car l'article à venir décrit l'utilisation avancée de la recherche en texte intégral. Il est souvent utile dans les scénarios d'analyse de base de données.

Choses à faire

Maintenant que vous pouvez configurer la recherche de texte intégral et exécuter des requêtes de texte intégral, veuillez essayer les choses suivantes pour améliorer vos compétences :

  1. Essayez de remplir la base de données Notes colonne en fournissant plus d'informations sur les articles. Elle doit être suivie par la définition du catalogue de texte intégral et l'exécution de requêtes de texte intégral pour rechercher des mots et des expressions à l'aide des mots clés CONTAINS et FREETEXT.
  2. Recherchez également le mot Unité pour connaître tous les articles où ce mot est mentionné. Il peut être stocké dans la colonne en tant que test unitaire, test unitaire ou tests unitaires.
  3. Reportez-vous à l'exemple de base de données dans cet article. Configurer la recherche en texte intégral pour la table Produit, définir l'index Full-Text sur la colonne nom, et ajoutez autant d'enregistrements que possible. Recherchez des mots et des expressions de votre choix pour trouver les produits (noms) souhaités.