Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Implementieren der Volltextsuche in SQL Server 2016 für Anfänger

Dieser Artikel spricht über die Volltextsuche und ihre Implementierung für Anfänger, um loszulegen.

Außerdem werden die Leser wissen, was wichtig ist, damit die Volltextsuche richtig funktioniert.

Dieser Artikel hebt auch die Bedeutung der Verwendung der Volltextsuche hervor, um Textmuster abzugleichen und ähnliche Arten von Anforderungen zu erfüllen.

Über die Volltextsuche

Lassen Sie uns die Volltextsuche anhand von Definitionen verstehen.

Einfache Definition

Die Volltextsuche wird verwendet, um zeichenbasierte Daten optimal nach schnellen Antworten zu durchsuchen.

Microsoft-Definition

Die Volltextsuche in SQL Server und Azure SQL-Datenbank (Cloudversion der SQL-Datenbank) ermöglicht es Benutzern und Anwendungen, Volltextabfragen für zeichenbasierte Daten in SQL Server-Tabellen auszuführen.

Was ist eine Volltextabfrage

Eine Volltextabfrage ist eine spezielle Art von Abfrage, die für Spalten mit Textdaten geschrieben und ausgeführt wird, um Datenmuster zu finden. Aus diesem Grund sollte die Volltextsuche für diese Spalten aktiviert werden.

Kompatibilität

Die Volltextsuche ist mit den folgenden SQL Server-Versionen kompatibel:

  1. SQL Server 2005 und höher
  2. Azure SQL-Datenbank

Volltextsuche Moderne Version

In neueren SQL Server-Versionen wie SQL 2016 steht neben der semantischen Suche auch die Volltextsuche zur Installation zur Verfügung.

Volltextsuche – SQL Server optional

Bitte denken Sie daran, dass die Volltextsuche nicht standardmäßig installiert wird, wenn Sie SQL Server installieren. Sie müssen es optional installieren, indem Sie Ihrer aktuellen SQL-Instanz weitere Funktionen hinzufügen, indem Sie das Setup verwenden, das Sie ursprünglich zur Installation Ihres SQL-Servers verwendet haben.

Volltextsuche – Datenbankstandard

Alle SQL-Datenbanken können standardmäßig mit der Volltextsuche verwendet werden. Außer den Anforderungen vor der Verwendung der Volltextsuche in einer SQL-Datenbank ist keine weitere Installation erforderlich.

Groß-/Kleinschreibung

Gemäß der Microsoft-Dokumentation unterscheidet die Volltextsuche nicht zwischen Groß- und Kleinschreibung, sodass die Wörter „Systemsteuerung“, „Systemsteuerung“ und „Systemsteuerung“ alle gleich behandelt werden.

Volltextsuche einrichten

Wie bereits erwähnt, müssen Sie die Volltextsuche als Funktion zu Ihrer vorhandenen SQL Server-Installation hinzufügen, indem Sie dieselbe Setup-Datei verwenden, die Sie zum Installieren von SQL Server verwendet haben.

SQL-Installer ausführen

Beginnen Sie mit der Ausführung des SQL Server-Installationsprogramms. Es gibt Ihnen die Möglichkeit, als Laufwerk zu mounten, wenn Sie es vorziehen, direkt vom Installationsprogramm aus zu starten, anstatt es zu speichern.

Setup-Datei ausführen

Klicken Sie auf die Datei Setup.exe, um das SQL Server-Setup auszuführen:

Als Funktion hinzufügen

Sobald Sie die Setup-Datei ausführen, werden einige erste Überprüfungen durchgeführt. Sobald diese Prüfungen bestanden sind, müssen Sie "Features zu einer vorhandenen Installationsoption hinzufügen" auswählen unter der Installations-Navigationsleiste (Abschnitt):

Wählen Sie Ihren aktuellen Server

Wählen Sie als Nächstes Ihren aktuellen/potenziellen Server aus, für den Sie die Volltextsuche installieren möchten. In unserem Fall ist es SQL 2016:

Hinzuzufügende Instanzfunktion auswählen

Wählen Sie als Nächstes die Volltext- und semantischen Extraktionen für die Suche aus hinzuzufügende Funktion (wenn Sie diese Funktion für ältere SQL-Versionen hinzufügen, werden semantische Extraktionen möglicherweise nicht angezeigt):

Bitte beachten Sie, da ich diese Funktion bereits vor der exemplarischen Vorgehensweise hinzugefügt habe, erscheint sie auf dem Screenshot ausgegraut. Aber für alle, die es zum ersten Mal hinzufügen, ist es aktiv und kann installiert werden, was eine Weile dauert.

Überprüfen Sie den Installationsstatus der Volltextsuche

Sobald die Volltextsuche installiert ist, können Sie sie überprüfen, indem Sie das folgende T-SQL-Skript für die Master-Datenbank ausführen:

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

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

Sobald Sie die Volltextsuche erfolgreich installiert haben, sehen Sie „1“, was bedeutet, dass das Skript ausgeführt wird:

Suchen von Wörtern und Ausdrücken mit der Volltextsuche

Jetzt werden wir einige grundlegende Suchoperationen für Wörter und Ausdrücke mit der Volltextsuche durchführen.

Beispieldatenbank einrichten

Um die grundlegende Verwendung der Volltextsuche zu verstehen, richten wir eine Beispieldatenbank namens SQLDevBlogV6 ein wie folgt:

-- 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ätze und Wörter

Sehen wir uns weitere Ausdrücke und Wörter im Kontext der Volltextsuche an. Dadurch erhalten Sie eine bessere Vorstellung davon, wonach Sie über die Volltextsuche suchen.

Die Anweisung „Einführung in T-SQL “ ist ein Satz und „Einführung “ und „T-SQL “ sind die interessanten Worte.

Schritte zur Implementierung der Volltextsuche in SQL Server

Eine Volltextsuche wird folgendermaßen implementiert:

  1. Erstellen Sie einen Volltextkatalog (um Volltextindizes zu speichern).
  2. Volltextindex für Tabelle oder indizierte Ansicht definieren.
  3. Führen Sie Volltextsuchabfragen mit CONTAINS oder FREETEXT durch, um Wörter und Ausdrücke zu finden.

Erstellen Sie einen Volltextkatalog

Die Beispieldatenbank (SQLDevBlogV6) wurde also erfolgreich erstellt und gefüllt. Das Erstellen eines Volltextkatalogs ist der erste Schritt zur Implementierung der Volltextsuche.

Gehen Sie zum Objekt-Explorer Erweitern Sie in SQL Server Datenbanken Knoten, und klicken Sie dann auf SQLDevBlogV6.

Klicken Sie auf Speicher , und klicken Sie dann auf Volltextkataloge und klicken Sie dann auf Neuer Volltextkatalog:

Geben Sie den Katalognamen als DevBlogCatalog, ein Klicken Sie auf OK:

Der neu erstellte Volltextkatalog sieht wie folgt aus:

Definieren Sie einen Volltextindex für eine Tabelle

Klicken Sie mit der rechten Maustaste auf die Artikel Tabelle, klicken Sie auf Volltextindex, und klicken Sie dann auf Volltextindex definieren wie unten gezeigt:

Dadurch wird der Volltextindizierungs-Assistent ausgelöst. Klicken Sie auf Weiter , und klicken Sie dann auf Weiter erneut, nachdem Sie sichergestellt haben, dass der Primärschlüssel der Tabelle vom Assistenten vorausgewählt wurde.

Wählen Sie im nächsten Schritt den Titel aus Spalte für Volltextabfragen. Dies ist die Spalte, für die wir unsere Volltextabfragen ausführen werden:

Wählen Sie als Nächstes die Standardoption zum Automatisieren der Änderungsverfolgung aus, indem Sie Automatisch auswählen Option (es sei denn, Sie möchten eine andere Option auswählen), wie unten gezeigt:

Wählen Sie im nächsten Schritt den Volltextkatalog (DevBlogCatalog) aus, der mit dem zuvor in dieser exemplarischen Vorgehensweise definierten Volltextindex verknüpft werden soll. Klicken Sie dann auf Weiter, nachdem Sie die Standardoptionen wie unten gezeigt ausgewählt haben:

Klicken Sie auf Weiter und überspringen Sie den optionalen Schritt, und klicken Sie dann auf Fertig stellen um zu sehen, ob der Volltextindex erfolgreich erstellt wurde.

Wir können jetzt Volltextabfragen gegen den Titel ausführen Spalte der Tabelle Artikel dank der Aktivierung der Volltextsuche.

Suche nach Worttest mit Volltextabfrage

Wir können jetzt schnell nach Wörtern suchen, indem wir CONTAINS verwenden Schlüsselwort (Prädikat) durch Schreiben des folgenden T-SQL-Skripts:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Die Ergebnisse zum Durchsuchen des Tests Wort im Titel Spalte lauten wie folgt:

Bitte beachten Sie, dass Sie dieselben Ergebnisse mit dem Like-Operator ohne Volltextsuche erhalten können. Der Unterschied besteht darin, dass Sie diese Abfrage für Millionen und Abermillionen von Zeilen ausführen und der LIKE-Operator Probleme hat. Unterdessen ist CONTAINS laut Experten deutlich schneller.

Suche nach Phrase für Anfänger mit Volltextabfrage

Lassen Sie uns alle Artikel finden, in denen der Ausdruck "für Anfänger" vorkommt wird im Titel verwendet. Dies wird Anfängern den schnellen Einstieg erleichtern.

Diesmal verwenden wir den FREETEXT Schlüsselwort (Prädikat). Es wird uns alle Artikel für Anfänger liefern, indem es das folgende T-SQL-Skript verwendet:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

Die Ausgabe sieht wie folgt aus:

Herzlichen Glückwunsch, Sie haben die Grundlagen der Volltextsuche erfolgreich erlernt. Sie haben auch praktische Erfahrungen mit dem Einrichten und Ausführen von Volltextsuchabfragen für Wörter und Ausdrücke gesammelt.

Bleiben Sie auf dem Laufenden, da der kommende Artikel die Verwendung der erweiterten Volltextsuche beschreibt. Es ist oft in Datenbankanalyseszenarien nützlich.

Dinge zu tun

Nachdem Sie nun die Volltextsuche einrichten und Volltextabfragen ausführen können, versuchen Sie bitte Folgendes, um Ihre Fähigkeiten zu verbessern:

  1. Versuchen Sie, die Datenbank Notizen zu füllen Spalte, indem Sie weitere Informationen zu den Artikeln bereitstellen. Anschließend sollte der Volltextkatalog definiert und Volltextabfragen ausgeführt werden, um mithilfe der Schlüsselwörter CONTAINS und FREETEXT nach Wörtern und Ausdrücken zu suchen.
  2. Suchen Sie auch nach dem Wort Einheit um alle Artikel zu finden, in denen dieses Wort erwähnt wird. Es kann in der Spalte als Unit Testing, Unit Test oder Unit Tests gespeichert werden.
  3. Beziehen Sie sich auf die Beispieldatenbank in diesem Artikel. Richten Sie die Volltextsuche für die Tabelle Produkt, ein Definieren Sie den Volltextindex für die Spalte name, und fügen Sie so viele Datensätze wie möglich hinzu. Suchen Sie nach Wörtern und Phrasen Ihrer Wahl, um die gewünschten Produkte (Namen) zu finden.