Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Implementazione della ricerca full-text in SQL Server 2016 per principianti

Questo articolo parla della ricerca full-text e della sua implementazione per i principianti per iniziare.

Inoltre, i lettori conosceranno le cose importanti per far funzionare correttamente la ricerca full-text.

Questo articolo sottolinea anche l'importanza di utilizzare la ricerca full-text per abbinare i modelli di testo e soddisfare tipi simili di requisiti.

Informazioni sulla ricerca full-text

Comprendiamo la ricerca full-text con l'aiuto delle definizioni.

Definizione semplice

La ricerca full-text viene utilizzata per cercare in modo ottimale dati basati sui caratteri per risposte rapide.

Definizione Microsoft

La ricerca full-text in SQL Server e nel database SQL di Azure (versione cloud del database SQL) consente agli utenti e alle applicazioni di eseguire query full-text sui dati basati sui caratteri nelle tabelle di SQL Server.

Cos'è la query full-text

Una query full-text è un tipo speciale di query che viene scritta ed eseguita su colonne con dati testuali per trovare modelli di dati. A tal fine, la ricerca full-text dovrebbe essere abilitata per quelle colonne.

Compatibilità

La ricerca full-text è compatibile con le seguenti versioni di SQL Server:

  1. SQL Server 2005 e versioni successive
  2. Database SQL di Azure

Ricerca full-text nella versione moderna

Nelle recenti versioni di SQL Server come SQL 2016, la ricerca full-text è disponibile per l'installazione insieme alla ricerca semantica.

Ricerca full-text – SQL Server opzionale

Tenere presente che la ricerca full-text non è installata per impostazione predefinita quando si installa SQL Server. È necessario installarlo facoltativamente aggiungendo più funzionalità all'istanza SQL corrente utilizzando la configurazione utilizzata originariamente per installare SQL Server.

Ricerca full-text – Database predefinito

Tutti i database SQL sono pronti per essere utilizzati con la ricerca full-text per impostazione predefinita. Non sono necessarie ulteriori installazioni ad eccezione dei requisiti prima di utilizzare la ricerca full-text in un database SQL.

Maiuscole/minuscole

Secondo la documentazione Microsoft, la ricerca full-text non fa distinzione tra maiuscole e minuscole, quindi le parole "pannello di controllo", "pannello di controllo" e "pannello di controllo" sono tutte trattate allo stesso modo.

Imposta ricerca full-text

Come accennato, è necessario aggiungere la ricerca full-text come funzionalità all'installazione di SQL Server esistente utilizzando lo stesso file di installazione utilizzato per installare SQL Server.

Esegui il programma di installazione SQL

Inizia eseguendo il programma di installazione di SQL Server. Ti offre un'opzione per il montaggio come unità se preferisci eseguire direttamente dal programma di installazione anziché salvarlo.

Esegui file di installazione

Fare clic sul file Setup.exe per eseguire l'installazione di SQL Server:

Aggiungi come funzionalità

Non appena esegui il file di installazione, verranno eseguiti alcuni controlli iniziali. Una volta superati questi controlli, devi selezionare "aggiungi funzionalità a un'opzione di installazione esistente" sotto la barra di navigazione Installazione (sezione):

Scegli il tuo server attuale

Quindi, scegli il tuo server attuale/potenziale per il quale installerai la ricerca full-text. Nel nostro caso, è SQL 2016:

Seleziona la funzione dell'istanza da aggiungere

Quindi, seleziona le Estrazioni di testo completo ed estrazioni semantiche per la ricerca funzionalità da aggiungere (se aggiungi questa funzionalità per versioni SQL precedenti, le estrazioni semantiche potrebbero non essere visualizzate):

Tieni presente che, dal momento che ho già aggiunto questa funzione prima della procedura dettagliata, viene visualizzata in grigio sullo screenshot. Ma per chiunque lo aggiunga per la prima volta, sarà attivo e può essere installato, cosa che richiede un po' di tempo.

Controlla lo stato di installazione della ricerca full-text

Una volta installata la ricerca full-text, puoi verificarla eseguendo il seguente script T-SQL sul database master:

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

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

Dopo aver installato correttamente la ricerca full-text, vedrai "1" a significare che lo script è in esecuzione:

Ricerca di parole e frasi utilizzando la ricerca full-text

Ora eseguiremo alcune operazioni di ricerca di base per parole e frasi utilizzando la ricerca full-text.

Imposta database di esempio

Per comprendere l'uso di base della ricerca full-text, impostiamo un database di esempio chiamato SQLDevBlogV6 come segue:

-- 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

Frasi e parole

Vediamo più frasi e parole nel contesto della ricerca full-text. Questo ti darà un'idea migliore di ciò che stai cercando tramite la ricerca full-text.

L'istruzione "Introduzione a T-SQL ” è una frase e “introduzione " e "T-SQL ” sono le parole di interesse.

Passaggi per implementare la ricerca full-text in SQL Server

Una ricerca full-text viene implementata nei seguenti modi:

  1. Crea un catalogo full-text (per archiviare indici full-text).
  2. Definisci indice full-text su tabella o vista indicizzata.
  3. Esegui query di ricerca full-text utilizzando CONTAINS o FREETEXT per trovare parole e frasi.

Crea un catalogo full-text

Quindi, il database di esempio (SQLDevBlogV6) è stato creato e popolato correttamente. La creazione di un catalogo full-text è il primo passo per implementare la ricerca full-text.

Vai a Esplora oggetti in SQL Server, espandere Database nodo, quindi fare clic su SQLDevBlogV6.

Fai clic su Archiviazione , quindi fai clic su Cataloghi full-text quindi fare clic su Nuovo catalogo full-text:

Inserisci il nome del catalogo come DevBlogCatalog, Fai clic su OK:

Il catalogo full-text appena creato ha il seguente aspetto:

Definisci un indice full-text sulla tabella

Fare clic con il pulsante destro del mouse sugli Articoli tabella, fare clic su Indice full-text, quindi fai clic su Definisci indice full-text come mostrato di seguito:

Ciò attiverà la procedura guidata di indicizzazione full-text. Fai clic su Avanti , quindi fai clic su Avanti nuovamente dopo aver verificato che la chiave primaria della tabella sia preselezionata dalla procedura guidata.

Nel passaggio successivo, seleziona il Titolo colonna per le query full-text. Questa è la colonna su cui eseguiremo le nostre query full-text:

Quindi, seleziona l'opzione predefinita per automatizzare il rilevamento delle modifiche selezionando Automaticamente opzione (a meno che tu non sia interessato a selezionare qualche altra opzione) come mostrato di seguito:

Nel passaggio successivo, scegli il catalogo full-text (DevBlogCatalog) da associare all'indice full-text definito in precedenza in questa procedura dettagliata. Quindi fare clic su Avanti dopo aver scelto le opzioni predefinite come mostrato di seguito:

Fai clic su Avanti e salta il passaggio facoltativo, quindi fai clic su Fine per verificare che l'indice full-text sia stato creato correttamente.

Ora possiamo eseguire query full-text sul Titolo colonna della tabella Articolo grazie all'abilitazione della ricerca full-text.

Cerca test di parole utilizzando la query full-text

Ora possiamo cercare rapidamente le parole utilizzando CONTENIS parola chiave (predicato) scrivendo il seguente script T-SQL:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

I risultati per la ricerca del Test parola nel Titolo colonna sono le seguenti:

Tieni presente che puoi ottenere gli stessi risultati utilizzando l'operatore Mi piace senza la ricerca full-text. La differenza è quando si esegue questa query su milioni e milioni di righe e questo è quando l'operatore LIKE ha difficoltà. Nel frattempo, CONTAINS è molto più veloce secondo gli esperti.

Cerca una frase per principianti utilizzando la query full-text

Troviamo tutti gli articoli in cui la frase "per principianti" è usato nel titolo. Questo aiuterà i principianti a iniziare rapidamente.

Questa volta utilizziamo il FREETEXT parola chiave (Predicato). Ci fornirà tutti gli articoli per i principianti utilizzando il seguente script T-SQL:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

L'output è il seguente:

Congratulazioni, hai imparato con successo le basi della ricerca full-text. Hai anche esperienza pratica nell'impostazione e nell'esecuzione di query di ricerca full-text per parole e frasi.

Rimani in contatto mentre il prossimo articolo descrive l'utilizzo avanzato della ricerca full-text. È spesso utile negli scenari di analisi di database.

Cose da fare

Ora che puoi impostare la ricerca full-text ed eseguire query full-text, prova le seguenti cose per migliorare le tue abilità:

  1. Prova a compilare il database Note colonna fornendo maggiori informazioni sugli articoli. Dovrebbe essere seguito dalla definizione del catalogo full-text e dall'esecuzione di query full-text per cercare parole e frasi utilizzando le parole chiave CONTAINS e FREETEXT.
  2. Inoltre, cerca la parola Unità per scoprire tutti gli articoli in cui viene menzionata questa parola. Può essere memorizzato nella colonna come Unit Test, Unit Test o Unit Test.
  3. Fare riferimento al database di esempio in questo articolo. Imposta testo completo Cerca la tabella Prodotto, definire l'indice full-text nella colonna nome, e aggiungi quanti più record puoi. Cerca parole e frasi a tua scelta per trovare i prodotti (nomi) desiderati.