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

Sådan bruges semantisk søgning i SQL Server

Denne artikel omhandler det grundlæggende i Semantisk søgning, herunder en komplet gennemgang af Semantisk søgning:starter fra bunden og afslutter med en funktion, der er klar til brug.

Derudover vil læserne lære om nogle af de meget nyttige, men ikke almindeligt kendte søgefunktioner, der er tilgængelige i SQL Server, såsom Semantisk søgning, som vi vil demonstrere med nogle grundlæggende eksempler.

Denne artikel understreger også betydningen af ​​semantisk søgning for en specifik analyseform, som ikke kan udføres med en almindelig søgning.

Hvad er semantisk søgning

Lad os først finde ud af, hvad semantisk søgning er, og hvordan den adskiller sig fra fuldtekstsøgning.

Microsoft Definition

Ifølge Microsofts dokumentation giver Semantic Search dyb indsigt i ustrukturerede dokumenter.

Alternativ definition

Semantisk søgning er en speciel søgeteknologi eller -funktion, der bruges til at udføre en omfattende søgning eller en sammenlignende analyse hovedsageligt i ustrukturerede data eller dokumenter, såsom MS Word-dokumenter, forudsat at de ustrukturerede data er gemt i SQL Server-databasen.

Kompatibilitet

Semantisk søgning er kun kompatibel med SQL Server 2012 og nyere versioner.

Husk Semantisk søgning ikke er kompatibel med Azure SQL-database eller Azure data warehouse cloud-løsninger.

Dette betyder, at du enten skal arbejde med en VM på Azure eller på en lokal SQL Server-instans for at bruge denne kraftfulde funktion.

Semantisk søgning vs fuldtekstsøgning

Ifølge Microsofts dokumentation giver fuldtekstsøgning dig mulighed for at forespørge på ordene i et dokument; Semantisk søgning giver dig mulighed for at forespørge på betydningen af ​​dokumentet.
Semantisk søgning sammen med fuldtekstsøgning repræsenterer én fælles funktion, der tilbydes af Microsoft SQL Server, og du kan enten vælge at installere dem under installationen af ​​din SQL Server-instans eller senere ved at tilføje nye funktioner til din eksisterende SQL-instans.

Forudsætninger

Lad os gennemgå forudsætningerne for den generelle brug af Semantisk søgning sammen med nogle af de ting, der kræves for at følge gennemgangen(e) i denne artikel.

Fuldtekstsøgning installeret

Det er obligatorisk at vide, hvordan man opsætter fuldtekstsøgning, da fuldtekstsøgning og semantisk søgning begge tilbydes som en fælles funktion.

Se venligst artiklen Implementing Full-Text Search i SQL Server 2016 for begyndere for at opsætte Full-Text Search, som er en forudsætning for at installere Semantic Search i SQL Server.

Denne artikel forventer, at du har installeret Full-Text Search på din SQL Server-instans.

dbForge Studio til SQL Server

Brugen af ​​Semantisk søgning (i gennemgangen af ​​denne artikel) kræver, at ustrukturerede data gemmes i SQL Server-databasen, og i denne artikel gjorde vi dette ved at bruge dbForge Studio til SQL Server i stedet for at gemme direkte ustrukturerede data i SQL Server.

SQL Server 2016

Vi bruger SQL Server 2016 i denne artikel, men trinene burde næsten være de samme for enhver anden kompatibel version.

Konfigurer semantisk søgning

For at bruge semantisk søgning eller statistisk semantisk søgning kan du installere det under installationen af ​​fuldtekstsøgning eller efterfølgende ved at tilføje fuldtekstsøgning og semantisk søgning som en ny funktion.

Fuld tekstsøgning

Kontroller installationsstatus for fuld tekstsøgning og semantisk søgning ved at køre følgende script mod masterdatabasen:

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

Hvis outputtet er 1, så er du klar til at gå, men hvis det er 0, så se venligst artiklen nævnt ovenfor for at installere fuldtekstsøgning og semantisk søgefunktion ved hjælp af SQL Server-opsætningen.

Installer Semantic Language Statistics Database

Installer Semantic Language Statistics Database ved enten at søge Microsoft® SQL Server® 2016 Semantic Language Statistics på internettet eller ved at klikke på følgende link.

Valg af download baseret på din Windows-udgave:

Installer sprogdatabasen:

Klik på Næste for at fortsætte, hvis du har det fint med vilkårene i licensaftalen:

Lad standardindstillingerne være som de er, men det anbefales at kontrollere diskomkostningerne som vist nedenfor:

Selvom filen kun tager omkring 747 MB ​​plads (på tidspunktet for skrivning af denne artikel), skal du kontrollere diskomkostningerne for at sikre, at du har nok ledig plads:

Når du er færdig med diskomkostningskontrollen, skal du klikke på OK og klik derefter på Næste .

Du vil blive bedt om at installere filen. Klik venligst på Installer (hvis interesseret i at gøre det):

Klik på Udfør når installationen er gennemført, hvilket skulle se ud som skærmbilledet nedenfor:

Find mappen, hvor Semantic Language Database blev installeret som standard (C:\Program Files\Microsoft Semantic Language Database):

Alt ser godt ud, så kopier data- og logfilen til din SQL-instans Data-mappe som vist nedenfor:

Husk venligst, at stien til DATA-mappen kan variere baseret på din SQL Server-version.

Vedhæft Semantic Language Database til SQL Instance

Højreklik på Databaser node under Object Explorer i SSMS (SQL Server Management Studio) og klik på Vedhæft :

Tilføj Semanticsdb.mdf og klik på OK :

Se databasen:

Registrer Semantic Database

Indtast følgende script mod masterdatabasen for at registrere Semantic Language Statistics Database:

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

Tjek den semantiske databasestatus

Tjek status for Semantic Language Statistics Database ved at køre følgende script mod masterdatabasen:

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

Outputtet må ikke være tomt og ville være som følger:

Husk, at værdierne ovenfor kan variere på din maskine, hvilket er normalt, så længe du ser en række, hvilket betyder, at databasen med semantisk sprogstatistik er blevet installeret på din SQL-instans.

Brug af semantisk søgning

Når Semantisk søgning er konfigureret, er vi klar til at bruge det i SQL Server.

Semantisk søgescenarie

Vi vil gemme medarbejdernes dokumenter (eksempler) i rich text-format i SQL Server-databasen for at blive søgt og sammenlignet senere med Semantisk søgning.

Opret en EmployeesSample-database

Opret en eksempeldatabase med en enkelt tabel ved at køre T-SQL-scriptet mod masterdatabasen som følger:

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

Tjek prøvedatabasen

Kør følgende script bare for at kontrollere eksempeldatabasetabellen:

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

Outputtet er som følger:

Tilføj den første Rich Text-fil ved hjælp af dbForge Studio til SQL Server

Vi vil tilføje binære data til tabellerne, som er repræsenteret af rige tekstfiler, ved hjælp af dbForge Studio til SQL Server .

Åbn eksempeldatabasen EmployeesSample i dbForge Studio til SQL Server.

Højreklik på EmployeesForSemanticSearch tabel og klik på Hent data:

Tilføj følgende data til EmployeesForSemanticSearch tabellen undtagen EmpDocument kolonne efter at have sikret, at tabellen ikke er i skrivebeskyttet tilstand:

EmpID:1

Dokumentnavn:Employee1Document

EmpDocument:(null)

EmpDocumentType:.rtf

Indsæt et dokument i RTF-format i EmpDocument kolonne ved at tilføje følgende tekst i tabellen (klikke på ellipser og tilføje data):

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. 

Gem dokumentet som Employee1Document.rtf i enhver passende Windows-mappe:

Anvend venligst ændringerne for at se, at du har gemt en RTF-fil i tabellen:

Tilføj den anden Rich Text-fil ved hjælp af dbForge Studio til SQL Server

Tilføj derefter endnu en rich text-fil til EmployeesForSemanticSearch tabel på samme måde som ovenfor ved hjælp af følgende information:

EmpID:2

DocumentName:Employee2Document

EmpDocument:(null)

EmpDocumentType:.rtf

Tilføj endnu en Rich Text-fil med følgende tekst:

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. 

Gem dokumentet i samme mappe som følger:

Gem dataene ved at opdatere tabellen og derefter bekræfte de ændringer, du lige har foretaget, ved at klikke på ja:

Opret et unikt indeks, fuldtekstindeks og semantisk indeks ved hjælp af Wizard

Tilbage i SSMS (SQL Server Management Studio), højreklik på tabellen og klik på Fuldtekstindeks og klik derefter påDefiner fuldtekstindeks... som vist nedenfor:

Dernæst skal du vælge et unikt indeks, som faktisk er valgt som standard, da vi oprettede EmpID primær nøglekolonne tidligere som vist nedenfor, og klik derfor på Næste for at fortsætte:

Vælg venligst EmpDocument fra Tilgængelige kolonner , britisk engelsk som Sprog til Word Breaker , EmpDocumentType som Type kolonne og tjek Statistisk semantisk søgning boks i samme række som følger:

Vælg indstillingen for ændringssporing ved at lade den være standardindstillinger, medmindre du har en solid grund til at ændre disse indstillinger:

Opret et nyt katalog som EmployeeCatalog :

Klik på Næste igen:

Til sidst, efter et par klik mere (klik på Næste ), er den påkrævede tabel klar til at blive forespurgt af Semantisk søgning:

Tjek, om Semantisk søgning er aktiveret for en tabel

Tjek venligst, om Semantisk søgning forbliver intakt for interessetabellen ved at køre følgende script mod prøvedatabasen:

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

Outputtet skulle indikere, at det er blevet aktiveret for den tredje kolonne, som vi satte det op i begyndelsen af ​​gennemgangen:

Eksempel 1:Brug af semantisk søgeresultat til at finde et relevant dokument

Vi kan nu bruge Semantisk søgning til at sammenligne to dokumenter for at finde et søgeord af interesse og dets relative score, hvilket hjælper med at henvise os til mere relevante dokumenter.

Hvis vi er interesseret i at se dokumentet, hvor ordet "research ” nævnes oftere sammenlignet med det andet dokument, så skal vi holde øje med scoren for hvert af dokumenterne, når vi kører følgende T-SQL script:

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

Resultatet af forespørgslen ovenfor er som følger:

Dokumentet med den højeste score viser, at det har mere relevans sammenlignet med det andet dokument, hvad angår vores interessepunkt (forskning).

Eksempel 2:Brug af semantisk søgeresultat til at finde et relevant dokument

Vi kan også finde det dokument, hvor ordet "faktum" dominerer sammenlignet med ethvert andet dokument ved at køre scriptet nedenfor:

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

Resultaterne er som følger:

Resultaterne ovenfor fører til den konklusion, at det andet lagrede dokument er det eneste dokument, hvor ordet faktum er nævnt, men hvis du gerne vil tjekke disse resultater, skal du åbne de gemte dokumenter for at se dem.

Tillykke! Du har med succes lært ikke kun at konfigurere Semantisk søgning i SQL Server, men du har også fået nogle praktiske erfaringer med at bruge Semantisk søgning.

Ting at gøre

Nu hvor du kan konfigurere og skrive nogle grundlæggende semantiske søgeforespørgsler, prøv følgende for at forbedre dine færdigheder yderligere:

  1. Prøv at tilføje et andet dokument, der fortæller om forskning og kør derefter scriptet i det første eksempel for at se, hvilket dokument der er det mest relevante dokument ved at sammenligne deres resultater.
  2. Med denne artikel i tankerne kan du tilføje et andet dokument, hvor ordet fakta er nævnt et par gange, og kør derefter T-SQL i eksempel 2 i denne artikel for at se, om resultaterne forbliver de samme eller ændrer sig.
  3. Prøv at bruge Semantisk søgning ved at tilføje flere dokumenter og mere tekst til både eksisterende og nye dokumenter og derefter finde de dokumenter, der matcher dine interesseord.
  4. Udforsk eksemplerne længere fremme for selv at finde ud af, om Semantisk søgning skelner mellem store og små bogstaver eller forskel på store og små bogstaver (Tip:Du kan ændre eksemplerne lidt).

  1. Sådan skilles DATE og TIME fra DATETIME i MySQL

  2. Sådan konverteres en streng til en dato i PostgreSQL

  3. Hvordan får man alle kolonnenavne til alle tabellerne i MySQL?

  4. Hvordan får man adgang til array internt indeks med postgreSQL?