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

Implementering af fuldtekstsøgning i SQL Server 2016 for begyndere

Denne artikel taler om fuldtekstsøgningen og dens implementering, så begyndere kan komme i gang.

Derudover vil læserne vide de vigtige ting for at få fuldtekstsøgningen til at fungere korrekt.

Denne artikel fremhæver også vigtigheden af ​​at bruge fuldtekstsøgning til at matche tekstmønstre og opfylde lignende krav.

Om fuldtekstsøgning

Lad os forstå fuldtekstsøgningen ved hjælp af definitioner.

Simpel definition

Full-Text Search bruges til optimalt at søge i tegnbaserede data for hurtige svar.

Microsoft Definition

Fuldtekstsøgning i SQL Server og Azure SQL Database (cloudversion af SQL-databasen) lader brugere og applikationer køre fuldtekstforespørgsler mod tegnbaserede data i SQL Server-tabeller.

Hvad er fuldtekstforespørgsel

En fuldtekstforespørgsel er en speciel form for forespørgsel, som skrives og køres mod kolonner med tekstdata for at finde datamønstre. For denne sag skal fuldtekstsøgning være aktiveret for disse kolonner.

Kompatibilitet

Full-Text Search er kompatibel med følgende SQL Server-versioner:

  1. SQL Server 2005 og opefter
  2. Azure SQL Database

moderne version af fuld tekstsøgning

I de seneste SQL Server-versioner, såsom SQL 2016, er fuldtekstsøgning tilgængelig til installation sammen med Semantisk søgning.

Fuld tekstsøgning – SQL Server valgfri

Husk, at fuldtekstsøgning ikke er installeret som standard, når du installerer SQL Server. Du skal installere det valgfrit ved at tilføje flere funktioner til din nuværende SQL-instans ved hjælp af den opsætning, du oprindeligt brugte til at installere din SQL Server.

Fuld tekstsøgning – Databasestandard

Alle SQL-databaser er klar til at blive brugt med fuldtekstsøgning som standard. Ingen yderligere installation er nødvendig undtagen kravene før brug af fuld tekstsøgning i en SQL-database.

Skrivar og bogstaver

Ifølge Microsoft-dokumentationen skelnes der ikke mellem store og små bogstaver i fuld tekstsøgning, så ordene "kontrolpanel", "kontrolpanel" og "kontrolpanel" behandles alle ens.

Konfigurer fuldtekstsøgning

Som nævnt skal du tilføje Full-Text Search som en funktion til din eksisterende SQL Server-installation ved at bruge den samme opsætningsfil, som du brugte til at installere SQL Server.

Kør SQL Installer

Start med at køre installationsprogrammet til SQL Server. Det giver dig mulighed for at montere som et drev, hvis du foretrækker at køre direkte fra installationsprogrammet i stedet for at gemme det.

Kør opsætningsfil

Klik på filen Setup.exe for at køre SQL Server-opsætningen:

Tilføj som en funktion

Så snart du kører installationsfilen, vil nogle indledende kontroller blive udført. Når disse kontroller er bestået, skal du vælge "tilføj funktioner til en eksisterende installationsmulighed" under installationsnavigationslinjen (sektion):

Vælg din nuværende server

Vælg derefter din nuværende/potentielle server, som du vil installere Full-Text Search for. I vores tilfælde er det SQL 2016:

Vælg den instansfunktion, der skal tilføjes

Vælg derefter Fuld tekst og semantiske udtræk til søgning funktion, der skal tilføjes (hvis du tilføjer denne funktion til ældre SQL-versioner, vises semantiske ekstraktioner muligvis ikke):

Bemærk venligst, da jeg allerede har tilføjet denne funktion før gennemgangen, vises den nedtonet på skærmbilledet. Men for alle, der tilføjer det for første gang, vil det være aktivt og kan installeres, hvilket tager lidt tid.

Tjek installationsstatus for fuld tekstsøgning

Når Full-Text Search er installeret, kan du kontrollere det ved at køre følgende T-SQL-script mod masterdatabasen:

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

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

Når du har installeret fuld tekstsøgning, vil du se "1", hvilket betyder, at scriptet kører:

Søgning af ord og sætninger ved hjælp af fuldtekstsøgning

Nu vil vi udføre nogle grundlæggende søgeoperationer for ord og sætninger ved hjælp af fuldtekstsøgning.

Opsætning af prøvedatabase

For at forstå den grundlæggende brug af fuldtekstsøgning, lad os opsætte en eksempeldatabase kaldet SQLDevBlogV6 som følger:

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

Sætninger og ord

Lad os se flere sætninger og ord i sammenhæng med fuldtekstsøgning. Dette vil give dig en bedre idé om, hvad du leder efter via fuldtekstsøgning.

Udsagnet "Introduktion til T-SQL ” er en sætning og “introduktion " og "T-SQL ” er ordene af interesse.

Trin til implementering af fuldtekstsøgning i SQL Server

En fuldtekstsøgning implementeres på følgende måder:

  1. Opret et fuldtekstkatalog (for at gemme fuldtekstindekser).
  2. Definer fuldtekstindeks på tabel eller indekseret visning.
  3. Kør fuldtekstsøgning med CONTAINS eller FREETEXT for at finde ord og sætninger.

Opret et fuldtekstkatalog

Så prøvedatabasen (SQLDevBlogV6) er blevet oprettet og udfyldt med succes. Oprettelse af et fuldtekstkatalog er det første skridt til at implementere fuldtekstsøgning.

Gå til Object Explorer i SQL Server skal du udvide Databaser node, og klik derefter på SQLDevBlogV6.

Klik på Lagring , og klik derefter på Fuldtekstkataloger og klik derefter på Nyt fuldtekstkatalog:

Indtast katalognavnet som DevBlogCatalog, Klik på OK:

Det nyoprettede fuldtekstkatalog ser ud som følger:

Definer et fuldtekstindeks på bordet

Højreklik på Artikler tabel, klik på Fuld tekstindeks, og klik derefter på Definer fuldtekstindeks som vist nedenfor:

Dette vil udløse guiden til indeksering af fuld tekst. Klik på Næste , og klik derefter på Næste igen efter at have sikret sig, at tabellens primære nøgle er forudvalgt af guiden.

I det næste trin skal du vælge Titel kolonne for fuldtekstforespørgsler. Dette er den kolonne, som vi skal køre vores Full-Text-forespørgsler mod:

Vælg derefter standardindstillingen for at automatisere ændringssporing ved at vælge Automatisk mulighed (medmindre du er interesseret i at vælge en anden mulighed) som vist nedenfor:

I det næste trin skal du vælge Full-Text Catalog (DevBlogCatalog) for at associere med Full-Text Index, som du definerede tidligere i denne gennemgang. Klik derefter på Næste efter at have valgt standardindstillingerne som vist nedenfor:

Klik på Næste og spring det valgfrie trin over, og klik derefter på Udfør for at se, at Full-Text Index er blevet oprettet.

Vi kan nu køre fuldtekstforespørgsler mod titlen kolonne i tabellen Artikel takket være at aktivere fuldtekstsøgning.

Søg efter ordtest ved hjælp af fuldtekstforespørgsel

Vi kan nu hurtigt søge efter ord ved at bruge INDHOLDER søgeord (prædikat) ved at skrive følgende T-SQL-script:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Resultaterne for at søge i Test ord i titlen kolonne er som følger:

Bemærk venligst, at du kan få de samme resultater ved at bruge Like-operatoren uden fuldtekstsøgning. Forskellen er, når du kører denne forespørgsel mod millioner og atter millioner af rækker, og det er, når LIKE-operatøren kæmper. I mellemtiden er CONTAINS langt hurtigere ifølge eksperterne.

Søg efter sætning for begyndere ved hjælp af fuldtekstforespørgsel

Lad os finde alle de artikler, hvor sætningen "for begyndere" bruges i titlen. Dette vil hjælpe begyndere med at komme hurtigt i gang.

Denne gang bruger vi FREETEXT nøgleord (prædikat). Det vil give os alle artikler til begyndere ved at bruge følgende T-SQL-script:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

Udgangen er som følger:

Tillykke, du har med succes lært det grundlæggende i fuldtekstsøgning. Du fik også praktisk erfaring med at opsætte og køre fuldtekstsøgeforespørgsler efter ord og sætninger.

Hold kontakten, da den kommende artikel beskriver den avancerede brug af fuldtekstsøgning. Det er ofte nyttigt i databaseanalysescenarier.

Ting at gøre

Nu hvor du kan konfigurere fuldtekstsøgning og køre fuldtekstforespørgsler, prøv venligst følgende ting for at forbedre dine færdigheder:

  1. Prøv at udfylde databasen Noter kolonne ved at give flere oplysninger om artiklerne. Det skal efterfølges af at definere Full-Text Catalogue og køre Full-Text-forespørgsler for at søge efter ord og sætninger ved at bruge nøgleordene CONTAINS og FREETEXT.
  2. Søg også efter ordet Enhed for at finde ud af alle de artikler, hvor dette ord er nævnt. Det kan gemmes i kolonnen som enhedstest, enhedstest eller enhedstest.
  3. Se eksempeldatabasen i denne artikel. Konfigurer fuldtekstsøgning efter tabellen Produkt, definere Full-Text-indekset i kolonnen navn, og tilføje så mange poster, som du kan. Søg efter ord og sætninger efter eget valg for at finde deres ønskede produkter (navne).


  1. Ingen resultater returneret af forespørgselsfejlen i PostgreSQL

  2. Brugerkontostyring, roller, tilladelser, godkendelse PHP og MySQL - Del 2

  3. Hvad er hurtigere COALESCE ELLER ISNULL?

  4. Heroku pg:pull kunne ikke udfylde skema