sql >> Database >  >> RDS >> Sqlserver

Full-Text Search implementeren in SQL Server 2016 voor beginners

Dit artikel gaat over zoeken in volledige tekst en de implementatie ervan voor beginners om aan de slag te gaan.

Bovendien zullen de lezers de belangrijke dingen weten om het zoeken in volledige tekst correct te laten werken.

Dit artikel benadrukt ook het belang van het gebruik van Zoeken in volledige tekst om tekstpatronen te matchen en aan vergelijkbare vereisten te voldoen.

Over zoeken in volledige tekst

Laten we het zoeken in volledige tekst begrijpen met behulp van definities.

Eenvoudige definitie

Zoeken in volledige tekst wordt gebruikt om op tekens gebaseerde gegevens optimaal te doorzoeken voor snelle antwoorden.

Microsoft-definitie

Met zoeken in volledige tekst in SQL Server en Azure SQL Database (cloudversie van SQL-database) kunnen gebruikers en toepassingen full-text query's uitvoeren op tekengebaseerde gegevens in SQL Server-tabellen.

Wat is Full-Text Query

Een Full-Text-query is een speciaal soort query die wordt geschreven en uitgevoerd tegen kolommen met tekstuele gegevens om gegevenspatronen te vinden. In dit geval moet Zoeken in volledige tekst zijn ingeschakeld voor die kolommen.

Compatibiliteit

Zoeken in volledige tekst is compatibel met de volgende SQL Server-versies:

  1. SQL Server 2005 en hoger
  2. Azure SQL Database

Moderne versie zoeken in volledige tekst

In de recente SQL Server-versies, zoals SQL 2016, is zoeken in volledige tekst beschikbaar voor installatie naast semantisch zoeken.

Zoeken in volledige tekst – SQL Server optioneel

Houd er rekening mee dat zoeken in volledige tekst niet standaard is geïnstalleerd wanneer u SQL Server installeert. U moet het optioneel installeren door meer functies toe te voegen aan uw huidige SQL-instantie met behulp van de instellingen die u oorspronkelijk hebt gebruikt om uw SQL Server te installeren.

Zoeken in volledige tekst – Standaard database

Alle SQL-databases zijn standaard klaar voor gebruik met Full-Text Search. Er is geen verdere installatie nodig, behalve de vereisten voor het gebruik van Full-Text Search in een SQL-database.

Hoofdlettergevoeligheid

Volgens de Microsoft-documentatie is zoeken in volledige tekst niet hoofdlettergevoelig, dus de woorden "configuratiescherm", "configuratiescherm" en "configuratiescherm" worden allemaal hetzelfde behandeld.

Zoeken in volledige tekst instellen

Zoals vermeld, moet u zoeken in volledige tekst als functie toevoegen aan uw bestaande SQL Server-installatie met hetzelfde installatiebestand dat u hebt gebruikt om SQL Server te installeren.

Voer SQL-installatieprogramma uit

Begin met het uitvoeren van het SQL Server-installatieprogramma. Het geeft je een optie om als schijf te mounten als je liever rechtstreeks vanuit het installatieprogramma draait in plaats van het op te slaan.

Installatiebestand uitvoeren

Klik op het bestand Setup.exe om de installatie van SQL Server uit te voeren:

Toevoegen als functie

Zodra u het installatiebestand uitvoert, worden enkele eerste controles uitgevoerd. Zodra deze controles zijn geslaagd, moet u "functies toevoegen aan een bestaande installatie-optie" selecteren onder de installatie-navigatiebalk (sectie):

Kies uw huidige server

Kies vervolgens uw huidige/potentiële server waarvoor u Full-Text Search gaat installeren. In ons geval is dat SQL 2016:

Selecteer instantiefunctie die moet worden toegevoegd

Selecteer vervolgens de Full-Text and Semantic Extractions for Search functie die moet worden toegevoegd (als u deze functie toevoegt voor oudere SQL-versies, wordt semantische extracties mogelijk niet weergegeven):

Let op, aangezien ik deze functie al vóór de walkthrough heb toegevoegd, wordt deze grijs weergegeven op de schermafbeelding. Maar voor iedereen die het voor de eerste keer toevoegt, is het actief en kan het worden geïnstalleerd, wat even duurt.

Controleer de installatiestatus van zoeken in volledige tekst

Zodra Full-Text Search is geïnstalleerd, kunt u dit controleren door het volgende T-SQL-script uit te voeren tegen de hoofddatabase:

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

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

Nadat u Full-Text Search met succes hebt geïnstalleerd, ziet u "1", wat betekent dat het script wordt uitgevoerd:

Woorden en zinnen zoeken met Zoeken in volledige tekst

Nu gaan we enkele basiszoekbewerkingen uitvoeren voor woorden en woordgroepen met Zoeken in volledige tekst.

Voorbeelddatabase instellen

Laten we, om het basisgebruik van zoeken in volledige tekst te begrijpen, een voorbeelddatabase opzetten met de naam SQLDevBlogV6 als volgt:

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

Zinnen en woorden

Laten we meer zinnen en woorden bekijken in de context van Full-Text Search. Dit geeft u een beter idee van wat u zoekt via Full-Text Search.

De verklaring "Inleiding tot T-SQL ” is een zin en “introductie ” en “T-SQL ” zijn de woorden van belang.

Stappen om zoeken in volledige tekst in SQL Server te implementeren

Zoeken in volledige tekst wordt op de volgende manieren geïmplementeerd:

  1. Maak een full-text catalogus (om full-text indexen op te slaan).
  2. Definieer de volledige tekstindex in de tabel- of geïndexeerde weergave.
  3. Voer zoekopdrachten in volledige tekst uit met CONTAINS of FREETEXT om woorden en woordgroepen te vinden.

Maak een volledige tekstcatalogus

De voorbeelddatabase (SQLDevBlogV6) is dus gemaakt en met succes ingevuld. Het maken van een Full-Text Catalog is de eerste stap om Full-Text Search te implementeren.

Ga naar Objectverkenner in SQL Server, vouw Databases . uit knooppunt en klik vervolgens op SQLDevBlogV6.

Klik op Opslag en klik vervolgens op Full-Text Catalogi, en klik vervolgens op Nieuwe volledige-tekstcatalogus:

Voer de catalogusnaam in als DevBlogCatalog, Klik op OK:

De nieuw gemaakte Full-Text Catalogus ziet er als volgt uit:

Definieer een full-text index op een tabel

Klik met de rechtermuisknop op de Artikelen tabel, klik op Full-Text index, en klik vervolgens op Definieer volledige tekstindex zoals hieronder weergegeven:

Hierdoor wordt de wizard Full-Text Indexing geactiveerd. Klik op Volgende en klik vervolgens op Volgende opnieuw nadat u ervoor heeft gezorgd dat de primaire sleutel van de tabel vooraf is geselecteerd door de wizard.

Selecteer in de volgende stap de Titel kolom voor zoekopdrachten in volledige tekst. Dit is de kolom waartegen we onze Full-Text-query's gaan uitvoeren:

Selecteer vervolgens de standaardoptie om het bijhouden van wijzigingen te automatiseren door Automatisch . te selecteren optie (tenzij u geïnteresseerd bent om een ​​andere optie te selecteren) zoals hieronder getoond:

Kies in de volgende stap de Full-Text Catalog (DevBlogCatalog) om te koppelen aan de Full-Text Index die u eerder in deze walkthrough hebt gedefinieerd. Klik vervolgens op Volgende nadat u de standaardopties hebt gekozen, zoals hieronder weergegeven:

Klik op Volgende en sla de optionele stap over en klik vervolgens op Voltooien om te zien dat de Full-Text Index succesvol is aangemaakt.

We kunnen nu Full-Text-query's uitvoeren op de Titel kolom van de tabel Artikel dankzij het inschakelen van Zoeken in volledige tekst.

Zoeken naar woordtesten met volledige tekstzoekopdracht

We kunnen nu snel naar woorden zoeken met behulp van de BEVAT trefwoord (predikaat) door het volgende T-SQL-script te schrijven:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

De resultaten om de Testen . te doorzoeken woord in de Titel kolom zijn als volgt:

Houd er rekening mee dat u dezelfde resultaten kunt krijgen met de operator 'Vind ik leuk' zonder Zoeken in volledige tekst. Het verschil is wanneer u deze query uitvoert op miljoenen en miljoenen rijen en dit is wanneer de LIKE-operator worstelt. Ondertussen is CONTAINS veel sneller volgens de experts.

Zoek naar een zin voor beginners met Full-Text Query

Laten we alle artikelen zoeken waarin de zin "voor beginners" wordt gebruikt in de titel. Hierdoor kunnen beginners snel aan de slag.

Deze keer gebruiken we de FREETEXT trefwoord (predikaat). We krijgen alle artikelen voor beginners door het volgende T-SQL-script te gebruiken:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

De uitvoer is als volgt:

Gefeliciteerd, u hebt met succes de basis van zoeken in volledige tekst geleerd. Je hebt ook praktische ervaring opgedaan met het opzetten en uitvoeren van zoekopdrachten in volledige tekst voor woorden en woordgroepen.

Blijf op de hoogte, want in het komende artikel wordt het geavanceerde gebruik van Full-Text Search beschreven. Het is vaak handig in scenario's voor databaseanalyse.

Dingen om te doen

Nu u Zoeken in volledige tekst kunt instellen en zoekopdrachten in volledige tekst kunt uitvoeren, kunt u het volgende proberen om uw vaardigheden te verbeteren:

  1. Probeer de database te vullen Opmerkingen kolom door meer informatie over de artikelen te geven. Het moet worden gevolgd door het definiëren van de Full-Text Catalogus en het uitvoeren van Full-Text queries om naar woorden en woordgroepen te zoeken met behulp van de trefwoorden CONTAINS en FREETEXT.
  2. Zoek ook naar de woordeenheid om alle artikelen te vinden waarin dit woord voorkomt. Het kan in de kolom worden opgeslagen als Unit Testing, Unit Test of Unit Tests.
  3. Zie de voorbeelddatabase in dit artikel. Stel Full-Text Search in voor de tabel Product, definieer de Full-Text index in de kolom name, en voeg zoveel records toe als je kunt. Zoek naar woorden en zinnen van uw keuze om de gewenste producten (namen) te vinden.


  1. Een tabelwaarde-functie wijzigen in SQL Server

  2. PSQL-opdrachtregelargumenten in DO-script

  3. Forceer indexgebruik in Oracle

  4. Waarom (en hoe) kolommen splitsen met master..spt_values?