sql >> Databasteknik >  >> RDS >> Sqlserver

Implementering av fulltextsökning i SQL Server 2016 för nybörjare

Den här artikeln talar om fulltextsökning och dess implementering för nybörjare att komma igång.

Dessutom kommer läsarna att veta de viktiga sakerna för att få fulltextsökningen att fungera korrekt.

Den här artikeln belyser också vikten av att använda fulltextsökning för att matcha textmönster och uppfylla liknande krav.

Om fulltextsökning

Låt oss förstå fulltextsökningen med hjälp av definitioner.

Enkel definition

Fulltextsökning används för att optimalt söka teckenbaserad data för snabba svar.

Microsoft Definition

Fulltextsökning i SQL Server och Azure SQL Database (molnversion av SQL-databas) låter användare och applikationer köra fulltextfrågor mot teckenbaserade data i SQL Server-tabeller.

Vad är fulltextfråga

En fulltextfråga är en speciell typ av fråga som skrivs och körs mot kolumner med textdata för att hitta datamönster. För den här delen bör fulltextsökning vara aktiverad för dessa kolumner.

Kompatibilitet

Fulltextsökning är kompatibel med följande SQL Server-versioner:

  1. SQL Server 2005 och uppåt
  2. Azure SQL Database

Modern version för fulltextsökning

I de senaste SQL Server-versionerna som SQL 2016 är Full-Text Search tillgänglig för installation tillsammans med Semantic Search.

Fulltextsökning – SQL Server tillval

Kom ihåg att Full-Text Search inte är installerat som standard när du installerar SQL Server. Du måste installera den valfritt genom att lägga till fler funktioner till din nuvarande SQL-instans med den inställning du ursprungligen använde för att installera din SQL Server.

Fulltextsökning – Databasstandard

Alla SQL-databaser är redo att användas med fulltextsökning som standard. Ingen ytterligare installation behövs förutom kraven innan du använder fulltextsökning i en SQL-databas.

Skaftkänslighet

Enligt Microsofts dokumentation är Full-Text Search inte skiftlägeskänsligt så orden "kontrollpanel", "kontrollpanel" och "kontrollpanel" behandlas alla på samma sätt.

Ställ in fulltextsökning

Som nämnts måste du lägga till fulltextsökning som en funktion till din befintliga SQL Server-installation med samma installationsfil som du använde för att installera SQL Server.

Kör SQL Installer

Börja med att köra installationsprogrammet för SQL Server. Det ger dig möjlighet att montera som en enhet om du föredrar att köra direkt från installationsprogrammet istället för att spara det.

Kör installationsfilen

Klicka på filen Setup.exe för att köra SQL Server-installationen:

Lägg till som en funktion

Så snart du kör installationsfilen kommer några inledande kontroller att utföras. När dessa kontroller har godkänts måste du välja ”lägg till funktioner till ett befintligt installationsalternativ” under installationsnavigeringsfältet (avsnittet):

Välj din nuvarande server

Välj sedan din nuvarande/potentiella server som du ska installera Full-Text Search för. I vårt fall är det SQL 2016:

Välj instansfunktion som ska läggas till

Välj sedan Fulltext och Semantic Extractions for Search funktion som ska läggas till (om du lägger till den här funktionen för äldre SQL-versioner kanske semantiska extraktioner inte visas):

Observera, eftersom jag redan har lagt till den här funktionen innan genomgången, visas den nedtonad på skärmdumpen. Men för alla som lägger till det för första gången kommer det att vara aktivt och kan installeras vilket tar en liten stund.

Kontrollera installationsstatus för fulltextsökning

När Full-Text Search är installerat kan du kontrollera det genom att köra följande T-SQL-skript mot huvuddatabasen:

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

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

När du väl har installerat Full-Text Search kommer du att se "1" vilket betyder att skriptet körs:

Söka efter ord och fraser med fulltextsökning

Nu kommer vi att utföra några grundläggande sökoperationer för ord och fraser med hjälp av fulltextsökning.

Konfigurera exempeldatabas

För att förstå den grundläggande användningen av fulltextsökning, låt oss skapa en exempeldatabas som heter SQLDevBlogV6 enligt följande:

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

Fraser och ord

Låt oss se fler fraser och ord i samband med fulltextsökning. Detta kommer att ge dig en bättre uppfattning om vad du letar efter via fulltextsökning.

Uttalandet "Introduktion till T-SQL ” är en fras och ”introduktion ” och ”T-SQL ” är orden av intresse.

Steg för att implementera fulltextsökning i SQL Server

En fulltextsökning implementeras på följande sätt:

  1. Skapa en fulltextkatalog (för att lagra fulltextindex).
  2. Definiera fulltextindex på tabell eller indexerad vy.
  3. Kör fulltextsökfrågor med CONTAINS eller FREETEXT för att hitta ord och fraser.

Skapa en fulltextkatalog

Så exempeldatabasen (SQLDevBlogV6) har skapats och fyllts i framgångsrikt. Att skapa en fulltextkatalog är det första steget för att implementera fulltextsökning.

Gå till Objektutforskaren expandera Databaser i SQL Server nod och klicka sedan på SQLDevBlogV6.

Klicka på Lagring , klicka sedan på Fulltextkataloger och klicka sedan på Ny fulltextkatalog:

Ange katalognamnet som DevBlogCatalog, Klicka på OK:

Den nyskapade fulltextkatalogen ser ut som följer:

Definiera ett fulltextindex på tabell

Högerklicka på Artiklar tabell, klicka på Full-Text index, och klicka sedan på Definiera fulltextindex som visas nedan:

Detta kommer att utlösa guiden för fulltextindexering. Klicka på Nästa och klicka sedan på Nästa igen efter att ha säkerställt att tabellens primärnyckel är förvald av guiden.

I nästa steg väljer du Titel kolumn för fulltextfrågor. Det här är kolumnen som vi ska köra våra fulltextfrågor mot:

Välj sedan standardalternativet för att automatisera ändringsspårning genom att välja Automatiskt alternativ (såvida du inte är intresserad av att välja något annat alternativ) som visas nedan:

I nästa steg, välj Full-Text Catalog (DevBlogCatalog) för att associera med Full-Text Index som du definierade tidigare i denna genomgång. Klicka sedan på Nästa efter att ha valt standardalternativen som visas nedan:

Klicka på Nästa och hoppa över det valfria steget och klicka sedan på Slutför för att se att Full-Text Index har skapats framgångsrikt.

Vi kan nu köra fulltextfrågor mot Titel kolumnen i tabellen Artikel tack vare att du har aktiverat fulltextsökning.

Sök efter ordtestning med Full-Text Query

Vi kan nu snabbt söka efter ord genom att använda INNEHÅLLER nyckelord (predikat) genom att skriva följande T-SQL-skript:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Resultaten för att söka i Test ord i Titel kolumnen är följande:

Observera att du kan få samma resultat med Like-operatorn utan fulltextsökning. Skillnaden är när du kör den här frågan mot miljoner och åter miljoner rader och det är då LIKE-operatören kämpar. Samtidigt är CONTAINS mycket snabbare enligt experterna.

Sök efter fras för nybörjare med fulltextfråga

Låt oss hitta alla artiklar där frasen "för nybörjare" används i titeln. Detta hjälper nybörjare att komma igång snabbt.

Den här gången använder vi FREETEXT nyckelord (predikat). Det kommer att ge oss alla artiklar för nybörjare genom att använda följande T-SQL-skript:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

Utgången är som följer:

Grattis, du har framgångsrikt lärt dig grunderna i fulltextsökning. Du fick också praktisk erfarenhet av att ställa in och köra fulltextsökfrågor för ord och fraser.

Håll kontakten eftersom den kommande artikeln beskriver den avancerade användningen av fulltextsökning. Det är ofta användbart i scenarier för databasanalys.

Saker att göra

Nu när du kan ställa in Full-Text Search och köra Full-Text-frågor, försök med följande saker för att förbättra dina färdigheter:

  1. Försök att fylla i databasen Anteckningar kolumn genom att ge mer information om artiklarna. Den bör följas av att definiera fulltextkatalogen och köra fulltextfrågor för att söka efter ord och fraser med nyckelorden CONTAINS och FREETEXT.
  2. Sök även efter ordet Enhet för att ta reda på alla artiklar där detta ord nämns. Den kan lagras i kolumnen som enhetstestning, enhetstest eller enhetstester.
  3. Se exempeldatabasen i den här artikeln. Ställ in fulltextsökning efter tabellen Produkt, definiera Full-Text-indexet i kolumnen namn, och lägg till så många poster du kan. Sök efter önskade ord och fraser för att hitta önskade produkter (namn).


  1. Hur man använder cPanel MySQL Database Wizard

  2. Logga frågetid i SQLite på Android

  3. Kan vi ha flera MED AS i singel sql - Oracle SQL

  4. TZ_OFFSET() Funktion i Oracle