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

So verwenden Sie die semantische Suche in SQL Server

Dieser Artikel befasst sich mit den Grundlagen der semantischen Suche, einschließlich einer vollständigen Anleitung zur semantischen Suche:von Grund auf neu beginnen und mit einer gebrauchsfertigen Funktion abschließen.

Darüber hinaus lernen die Leser einige der sehr nützlichen, aber nicht allgemein bekannten Suchfunktionen kennen, die in SQL Server verfügbar sind, wie z. B. die semantische Suche, die wir anhand einiger grundlegender Beispiele demonstrieren werden.

Dieser Artikel betont auch die Bedeutung der semantischen Suche für eine bestimmte Form der Analyse, die mit einer gewöhnlichen Suche nicht durchgeführt werden kann.

Was ist semantische Suche

Lassen Sie uns zunächst herausfinden, was genau die semantische Suche ist und wie sie sich von der Volltextsuche unterscheidet.

Microsoft-Definition

Laut Microsoft-Dokumentation bietet die semantische Suche tiefe Einblicke in unstrukturierte Dokumente.

Alternative Definition

Semantische Suche ist eine spezielle Suchtechnologie oder -funktion, die verwendet wird, um eine umfassende Suche oder eine vergleichende Analyse hauptsächlich in unstrukturierten Daten oder Dokumenten wie MS Word-Dokumenten durchzuführen, vorausgesetzt, die unstrukturierten Daten sind in der SQL Server-Datenbank gespeichert.

Kompatibilität

Die semantische Suche ist nur mit SQL Server 2012 und späteren Versionen kompatibel.

Bitte denken Sie daran, dass die semantische Suche nicht mit Azure SQL-Datenbank- oder Azure Data Warehouse-Cloudlösungen kompatibel ist.

Das bedeutet, dass Sie entweder mit einer VM in Azure oder auf einer lokalen SQL Server-Instanz arbeiten müssen, um diese leistungsstarke Funktion nutzen zu können.

Semantische Suche vs. Volltextsuche

Laut Microsoft-Dokumentation können Sie mit der Volltextsuche die Wörter in einem Dokument abfragen. Mit der semantischen Suche können Sie die Bedeutung des Dokuments abfragen.
Die semantische Suche stellt zusammen mit der Volltextsuche eine gemeinsame Funktion dar, die von Microsoft SQL Server angeboten wird, und Sie können sie entweder während der Installation Ihrer SQL Server-Instanz oder später installieren, indem Sie Ihrer vorhandenen SQL-Instanz neue Funktionen hinzufügen.

Voraussetzungen

Lassen Sie uns die Voraussetzungen für die allgemeine Verwendung der semantischen Suche zusammen mit einigen Dingen durchgehen, die erforderlich sind, um den Walkthroughs in diesem Artikel zu folgen.

Volltextsuche installiert

Es ist zwingend erforderlich zu wissen, wie die Volltextsuche eingerichtet wird, da Volltextsuche und semantische Suche beide als gemeinsame Funktion angeboten werden.

Bitte lesen Sie den Artikel Implementierung der Volltextsuche in SQL Server 2016 für Anfänger, um die Volltextsuche einzurichten, die eine Voraussetzung für die Installation der semantischen Suche in SQL Server ist.

Dieser Artikel setzt voraus, dass Sie die Volltextsuche auf Ihrer SQL Server-Instanz installiert haben.

dbForge Studio für SQL Server

Die Verwendung der semantischen Suche (in der exemplarischen Vorgehensweise dieses Artikels) erfordert, dass unstrukturierte Daten in der SQL Server-Datenbank gespeichert werden, und in diesem Artikel haben wir dies mit dbForge Studio für SQL Server getan, anstatt direkt unstrukturierte Daten in SQL Server zu speichern.

SQL-Server 2016

Wir verwenden in diesem Artikel SQL Server 2016, aber die Schritte sollten für jede andere kompatible Version fast gleich sein.

Semantische Suche einrichten

Um die semantische Suche oder die statistische semantische Suche zu verwenden, können Sie sie während der Installation der Volltextsuche oder danach installieren, indem Sie die Volltextsuche und die semantische Suche als neue Funktion hinzufügen.

Prüfung der Volltextsuche

Bitte überprüfen Sie den Installationsstatus der Volltextsuche und der semantischen Suche, indem Sie das folgende Skript für die Master-Datenbank ausführen:

-- Full-Text Search and Semantic Search status
SELECT SERVERPROPERTY('IsFullTextInstalled') as [Full-Text-Search-and-Semantic-Search-Installed];  
GO

Wenn die Ausgabe 1 ist, können Sie loslegen, aber wenn sie 0 ist, lesen Sie bitte den oben genannten Artikel, um die Volltextsuche und die semantische Suche mit dem SQL Server-Setup zu installieren.

Installieren Sie die Datenbank für semantische Sprachstatistiken

Installieren Sie die Semantic Language Statistics Database, indem Sie entweder nach Microsoft® SQL Server® 2016 Semantic Language Statistics suchen im Internet oder unter folgendem Link.

Auswählen des Downloads basierend auf Ihrer Windows-Edition:

Sprachdatenbank installieren:

Klicken Sie auf Weiter um fortzufahren, wenn Sie mit den Bedingungen der Lizenzvereinbarung einverstanden sind:

Belassen Sie die Standardoptionen wie sie sind, aber es wird empfohlen, die Festplattenkosten wie unten gezeigt zu überprüfen:

Obwohl die Datei nur etwa 747 MB ​​Speicherplatz benötigt (zum Zeitpunkt der Erstellung dieses Artikels), überprüfen Sie die Festplattenkosten, um sicherzustellen, dass Sie genügend Speicherplatz zur Verfügung haben:

Wenn Sie mit der Festplattenkostenprüfung fertig sind, klicken Sie auf OK und klicken Sie dann auf Weiter .

Sie werden aufgefordert, die Datei zu installieren. Klicken Sie bitte auf Installieren (bei Interesse):

Klicken Sie auf Fertig stellen Sobald die Installation erfolgreich abgeschlossen ist, sollte dies wie im folgenden Screenshot aussehen:

Suchen Sie den Ordner, in dem die Semantic Language Database standardmäßig installiert wurde (C:\Programme\Microsoft Semantic Language Database):

Alles sieht gut aus, also kopieren Sie die Daten- und Protokolldatei wie unten gezeigt in den Datenordner Ihrer SQL-Instanz:

Bitte denken Sie daran, dass der Pfad des Ordners DATA je nach Ihrer SQL Server-Version variieren kann.

Semantische Sprachdatenbank an SQL-Instanz anhängen

Klicken Sie mit der rechten Maustaste auf die Datenbanken -Knoten unter Objekt-Explorer in SSMS (SQL Server Management Studio) und klicken Sie auf Anhängen :

Fügen Sie Semanticsdb.mdf hinzu und klicken Sie auf OK :

Sehen Sie sich die Datenbank an:

Semantische Datenbank registrieren

Geben Sie das folgende Skript für die Master-Datenbank ein, um die Semantic Language Statistics Database zu registrieren:

-- Register Semantic Language Statistics Database
EXEC sp_fulltext_semantic_register_language_statistics_db @dbname = N'semanticsdb';  
GO

Überprüfen Sie den Status der semantischen Datenbank

Überprüfen Sie den Status der Semantic Language Statistics Database, indem Sie das folgende Skript für die Master-Datenbank ausführen:

-- Check Semantic Language Statistics Database status
SELECT * FROM sys.fulltext_semantic_language_statistics_database;  
GO

Die Ausgabe darf nicht leer sein und würde wie folgt aussehen:

Bitte denken Sie daran, dass die obigen Werte auf Ihrem Computer abweichen können, was normal ist, solange Sie eine Zeile sehen, bedeutet dies, dass die Datenbank für semantische Sprachstatistiken erfolgreich auf Ihrer SQL-Instanz installiert wurde.

Semantische Suche verwenden

Sobald die semantische Suche vollständig eingerichtet ist, können wir sie in SQL Server verwenden.

Semantisches Suchszenario

Wir werden Mitarbeiterdokumente (Beispiele) im Rich-Text-Format in der SQL-Server-Datenbank speichern, um sie später mit der semantischen Suche zu durchsuchen und zu vergleichen.

Eine Musterdatenbank für Mitarbeiter einrichten

Erstellen Sie eine Beispieldatenbank mit einer einzelnen Tabelle, indem Sie das T-SQL-Skript wie folgt für die Master-Datenbank ausführen:

-- (1) Setup sample database
Create DATABASE EmployeesSample;
GO

USE EmployeesSample

-- (2) Create EmployeesForSemanticSearch table
CREATE TABLE [dbo].[EmployeesForSemanticSearch](
	[EmpID] [int] NOT NULL,
	[DocumentName] [varchar](200) NULL,
	[EmpDocument] [varbinary](max) NULL,
	[EmpDocumentType] [varchar](200) NULL,
 CONSTRAINT [PK_EmployeesForSemanticSearch_EmpID] PRIMARY KEY CLUSTERED 
(
	[EmpID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

Prüfen Sie die Beispieldatenbank

Führen Sie das folgende Skript aus, nur um die Beispieldatenbanktabelle zu überprüfen:

-- View all the employees
SELECT efss.EmpID
      ,efss.DocumentName
      ,efss.EmpDocument
      ,efss.EmpDocumentType FROM dbo.EmployeesForSemanticSearch efss

Die Ausgabe sieht wie folgt aus:

Fügen Sie die erste Rich-Text-Datei mit dbForge Studio für SQL Server hinzu

Wir werden binäre Daten zu den Tabellen hinzufügen, die durch Rich-Text-Dateien dargestellt werden, indem wir dbForge Studio für SQL Server verwenden .

Öffnen Sie die Beispieldatenbank EmployeesSample in dbForge Studio für SQL Server.

Klicken Sie mit der rechten Maustaste auf EmployeesForSemanticSearch Tabelle und klicken Sie auf Daten abrufen:

Fügen Sie die folgenden Daten zu EmployeesForSemanticSearch hinzu Tabelle mit Ausnahme von EmpDocument Spalte, nachdem Sie sichergestellt haben, dass sich die Tabelle nicht im schreibgeschützten Modus befindet:

EmpID:1

Dokumentname:Mitarbeiter1Dokument

EmpDocument:(null)

EmpDocumentType:.rtf

Fügen Sie ein Dokument im Rich-Text-Format in das EmpDocument ein Spalte, indem Sie den folgenden Text in die Tabelle einfügen (auf die Ellipsen klicken und die Daten hinzufügen):

This is a research based article and it is a new research which is in process but this is superb in the field of research.

Speichern Sie das Dokument als Employee1Document.rtf in einem geeigneten Windows-Ordner:

Bitte wenden Sie die Änderungen an, um zu sehen, dass Sie erfolgreich eine Rich-Text-Datei in der Tabelle gespeichert haben:

Fügen Sie die zweite Rich-Text-Datei mit dbForge Studio für SQL Server hinzu

Fügen Sie als Nächstes eine weitere Rich-Text-Datei zu EmployeesForSemanticSearch hinzu Tabelle auf die gleiche Weise wie oben unter Verwendung der folgenden Informationen:

EmpID:2

Dokumentname:Employee2Document

EmpDocument:(null)

EmpDocumentType:.rtf

Fügen Sie eine weitere Rich-Text-Datei mit dem folgenden Text hinzu:

This is an article which is about facts and figures with little research in it it talks about fact and figures just facts and figures.

Speichern Sie das Dokument wie folgt im selben Ordner:

Speichern Sie die Daten, indem Sie die Tabelle aktualisieren und anschließend die soeben vorgenommenen Änderungen mit Ja bestätigen:

Erstellen Sie mit dem Assistenten einen eindeutigen Index, Volltextindex und semantischen Index

Klicken Sie in SSMS (SQL Server Management Studio) mit der rechten Maustaste auf die Tabelle und klicken Sie auf Volltextindex und klicken Sie dann auf Volltextindex definieren… wie unten gezeigt:

Als nächstes müssen Sie einen eindeutigen Index auswählen, der standardmäßig ausgewählt ist, da wir EmpID erstellt haben Primärschlüsselspalte früher wie unten gezeigt, klicken Sie daher auf Weiter um fortzufahren:

Bitte wählen Sie EmpDocument aus aus Verfügbare Spalten , Britisches Englisch als Sprache für Word Breaker , EmpDocumentType als Typspalte und prüfen Sie die Statistisch-semantische Suche Feld in der gleichen Zeile wie folgt:

Wählen Sie die Änderungsverfolgungsoption aus, indem Sie sie auf den Standardeinstellungen belassen, es sei denn, Sie haben einen triftigen Grund, diese Einstellungen zu ändern:

Erstellen Sie einen neuen Katalog als EmployeeCatalog :

Klicken Sie auf Weiter nochmal:

Schließlich, nach ein paar weiteren Klicks (Klicken Sie auf Weiter ), ist die erforderliche Tabelle für die Abfrage durch die semantische Suche bereit:

Überprüfen Sie, ob die semantische Suche für eine Tabelle aktiviert ist

Bitte überprüfen Sie, ob die semantische Suche für die relevante Tabelle intakt bleibt, indem Sie das folgende Skript für die Beispieldatenbank ausführen:

-- Check if Semantic Search is enabled for a database, table, and column
SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('EmployeesForSemanticSearch')  
GO

Die Ausgabe sollte anzeigen, dass sie für die dritte Spalte aktiviert wurde, wie wir sie am Anfang der exemplarischen Vorgehensweise eingerichtet haben:

Beispiel 1:Verwenden des Scores der semantischen Suche, um ein relevantes Dokument zu finden

Wir können jetzt die semantische Suche verwenden, um zwei Dokumente zu vergleichen, um ein interessantes Schlüsselwort und seine relative Punktzahl zu finden, was uns hilft, auf relevantere Dokumente zu verweisen.

Wenn wir daran interessiert sind, das Dokument einzusehen, in dem das Wort „research ” im Vergleich zu dem anderen Dokument häufiger erwähnt wird, müssen wir die Punktzahl für jedes der Dokumente im Auge behalten, wenn wir das folgende T-SQL-Skript ausführen:

-- Using Semantic Search to find the score for the word research in both documents
SELECT TOP (100) DOC_TBL.EmpID, DOC_TBL.EmpDocumentType,KEYP_TBL.keyphrase,
KEYP_TBL.score
FROM
EmployeesForSemanticSearch AS DOC_TBL  
    INNER JOIN SEMANTICKEYPHRASETABLE  
    (  
    EmployeesForSemanticSearch,  
    EmpDocument
    ) AS KEYP_TBL  
ON DOC_TBL.EmpID = KEYP_TBL.document_key  
WHERE KEYP_TBL.keyphrase = 'research'  
ORDER BY KEYP_TBL.Score DESC;

Das Ergebnis der obigen Abfrage lautet wie folgt:

Das Dokument mit der höchsten Punktzahl zeigt, dass es im Vergleich zum anderen Dokument relevanter ist, was unseren Interessenbereich (Forschung) betrifft.

Beispiel 2:Verwenden des Scores der semantischen Suche, um ein relevantes Dokument zu finden

Wir können auch das Dokument finden, in dem das Wort „Fakt“ im Vergleich zu anderen Dokumenten dominiert, indem Sie das folgende Skript ausführen:

-- Using Semantic Search to find the score for the word fact in both documents
SELECT TOP (100) DOC_TBL.EmpID, DOC_TBL.EmpDocumentType,KEYP_TBL.keyphrase,
KEYP_TBL.score
FROM
EmployeesForSemanticSearch AS DOC_TBL  
    INNER JOIN SEMANTICKEYPHRASETABLE  
    (  
    EmployeesForSemanticSearch,  
    EmpDocument
    ) AS KEYP_TBL  
ON DOC_TBL.EmpID = KEYP_TBL.document_key  
WHERE KEYP_TBL.keyphrase = 'fact'  
ORDER BY KEYP_TBL.Score DESC;

Die Ergebnisse lauten wie folgt:

Die obigen Ergebnisse lassen den Schluss zu, dass das zweite gespeicherte Dokument das einzige Dokument ist, in dem das Wort Fakt vorkommt wird erwähnt, aber wenn Sie diese Ergebnisse überprüfen möchten, öffnen Sie die gespeicherten Dokumente, um sie sich anzusehen.

Herzliche Glückwünsche! Sie haben erfolgreich gelernt, nicht nur die semantische Suche in SQL Server einzurichten, sondern auch praktische Erfahrungen mit der Verwendung der semantischen Suche gesammelt.

Dinge zu tun

Nachdem Sie nun einige grundlegende semantische Suchabfragen einrichten und schreiben können, versuchen Sie Folgendes, um Ihre Fähigkeiten weiter zu verbessern:

  1. Versuchen Sie, ein anderes Dokument hinzuzufügen, das über Forschung berichtet und führen Sie dann das Skript im ersten Beispiel aus, um zu sehen, welches Dokument das relevanteste Dokument ist, indem Sie ihre Punktzahlen vergleichen.
  2. Denken Sie an diesen Artikel und fügen Sie ein weiteres Dokument hinzu, in dem das Wort Fakt steht mehrmals erwähnt wird, und führen Sie dann T-SQL in Beispiel 2 dieses Artikels aus, um zu sehen, ob die Ergebnisse gleich bleiben oder sich ändern.
  3. Probieren Sie die semantische Suche aus, indem Sie mehr Dokumente und mehr Text zu vorhandenen und neuen Dokumenten hinzufügen und dann die Dokumente finden, die Ihren Interessen entsprechen.
  4. Untersuchen Sie die Beispiele weiter unten, um selbst herauszufinden, ob bei der Semantischen Suche zwischen Groß- und Kleinschreibung unterschieden wird (Hinweis:Sie können die Beispiele leicht ändern).