Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak korzystać z wyszukiwania semantycznego w SQL Server

Ten artykuł dotyczy podstaw wyszukiwania semantycznego, w tym pełnego przewodnika po wyszukiwaniu semantycznym:zaczynając od zera i kończąc na gotowej do użycia funkcji.

Ponadto czytelnicy poznają niektóre z bardzo przydatnych, ale nie ogólnie znanych funkcji wyszukiwania dostępnych w SQL Server, takich jak wyszukiwanie semantyczne, które zademonstrujemy na kilku podstawowych przykładach.

Ten artykuł podkreśla również znaczenie wyszukiwania semantycznego dla określonej formy analizy, której nie można przeprowadzić za pomocą zwykłego wyszukiwania.

Co to jest wyszukiwanie semantyczne

Najpierw ustalmy, czym dokładnie jest wyszukiwanie semantyczne i czym różni się od wyszukiwania pełnotekstowego.

Definicja Microsoft

Zgodnie z dokumentacją Microsoft, Semantic Search zapewnia głęboki wgląd w nieustrukturyzowane dokumenty.

Alternatywna definicja

Wyszukiwanie semantyczne to specjalna technologia wyszukiwania lub funkcja wykorzystywana do przeprowadzania kompleksowego wyszukiwania lub analizy porównawczej, głównie w nieustrukturyzowanych danych lub dokumentach, takich jak dokumenty MS Word, pod warunkiem, że nieustrukturyzowane dane są przechowywane w bazie danych SQL Server.

Kompatybilność

Wyszukiwanie semantyczne jest kompatybilne tylko z SQL Server 2012 i nowszymi wersjami.

Pamiętaj, że wyszukiwanie semantyczne nie jest kompatybilne z bazą danych Azure SQL lub rozwiązaniami chmurowymi hurtowni danych Azure.

Oznacza to, że aby wykorzystać tę zaawansowaną funkcję, musisz pracować z maszyną wirtualną na platformie Azure lub z lokalną instancją SQL Server.

Wyszukiwanie semantyczne a wyszukiwanie pełnotekstowe

Zgodnie z dokumentacją firmy Microsoft, wyszukiwanie pełnotekstowe umożliwia wyszukiwanie słów w dokumencie; wyszukiwanie semantyczne umożliwia sprawdzenie znaczenia dokumentu.
Wyszukiwanie semantyczne wraz z wyszukiwaniem pełnotekstowym reprezentuje jedną wspólną funkcję oferowaną przez Microsoft SQL Server i można ją zainstalować podczas instalacji instancji SQL Server lub później, dodając nowe funkcje do istniejącej instancji SQL.

Wymagania wstępne

Przejdźmy przez wymagania wstępne dla ogólnego korzystania z wyszukiwania semantycznego wraz z niektórymi rzeczami wymaganymi do wykonania instrukcji w tym artykule.

Zainstalowano wyszukiwanie pełnotekstowe

Znajomość konfiguracji wyszukiwania pełnotekstowego jest obowiązkowa, ponieważ wyszukiwanie pełnotekstowe i semantyczne są oferowane jako wspólna funkcja.

Zapoznaj się z artykułem Implementacja wyszukiwania pełnotekstowego w SQL Server 2016 dla początkujących, aby skonfigurować wyszukiwanie pełnotekstowe, które jest warunkiem wstępnym instalacji wyszukiwania semantycznego w SQL Server.

W tym artykule oczekujemy, że zainstalowałeś wyszukiwanie pełnotekstowe na swojej instancji SQL Server.

dbForge Studio dla serwera SQL

Korzystanie z wyszukiwania semantycznego (w omówieniu tego artykułu) wymaga przechowywania nieustrukturyzowanych danych w bazie danych SQL Server, a w tym artykule zrobiliśmy to za pomocą dbForge Studio dla SQL Server, zamiast zapisywać bezpośrednio nieustrukturyzowane dane w SQL Server.

Serwer SQL 2016

W tym artykule używamy SQL Server 2016, ale kroki powinny być prawie takie same dla każdej innej zgodnej wersji.

Skonfiguruj wyszukiwanie semantyczne

Aby korzystać z wyszukiwania semantycznego lub statystycznego wyszukiwania semantycznego, możesz zainstalować je podczas instalacji wyszukiwania pełnotekstowego lub później, dodając wyszukiwanie pełnotekstowe i semantyczne jako nową funkcję.

Sprawdzenie wyszukiwania pełnotekstowego

Sprawdź stan instalacji wyszukiwania pełnotekstowego i wyszukiwania semantycznego, uruchamiając następujący skrypt w głównej bazie danych:

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

Jeśli wynik wynosi 1, dobrze jest iść, ale jeśli jest to 0, zapoznaj się z artykułem wspomnianym powyżej, aby zainstalować funkcję wyszukiwania pełnotekstowego i wyszukiwania semantycznego przy użyciu konfiguracji SQL Server.

Zainstaluj bazę danych statystycznych języka semantycznego

Zainstaluj bazę danych statystyk języka semantycznego, wyszukując Microsoft® SQL Server® 2016 Semantic Language Statistics w Internecie lub klikając poniższy link.

Wybieranie pobierania na podstawie wersji systemu Windows:

Zainstaluj bazę danych języków:

Kliknij Dalej aby kontynuować, jeśli zgadzasz się z warunkami umowy licencyjnej:

Pozostaw domyślne opcje bez zmian, ale zaleca się sprawdzenie kosztu dysku, jak pokazano poniżej:

Chociaż plik zajmuje tylko około 747 MB ​​miejsca (w momencie pisania tego artykułu), sprawdź koszt dysku, aby upewnić się, że masz wystarczająco dużo miejsca:

Po zakończeniu sprawdzania kosztów dysku kliknij OK a następnie kliknij Dalej .

Zostaniesz poproszony o zainstalowanie pliku, kliknij Zainstaluj (jeśli jesteś zainteresowany):

Kliknij Zakończ po pomyślnym zakończeniu instalacji, co powinno wyglądać jak na poniższym zrzucie ekranu:

Znajdź folder, w którym domyślnie zainstalowano bazę danych języka semantycznego (C:\Program Files\Microsoft Semantic Language Database):

Wszystko wygląda dobrze, więc skopiuj plik Data and Log do folderu Data instancji SQL, jak pokazano poniżej:

Pamiętaj, że ścieżka folderu DATA może się różnić w zależności od Twojej wersji programu SQL Server.

Dołącz bazę danych języka semantycznego do instancji SQL

Kliknij prawym przyciskiem myszy Bazy danych węzeł w Eksploratorze obiektów w SSMS (SQL Server Management Studio) i kliknij Dołącz :

Dodaj Semanticsdb.mdf i kliknij OK :

Wyświetl bazę danych:

Zarejestruj semantyczną bazę danych

Wpisz następujący skrypt w głównej bazie danych, aby zarejestrować bazę danych statystyk języka semantycznego:

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

Sprawdź stan semantycznej bazy danych

Sprawdź stan bazy danych statystyk języka semantycznego, uruchamiając następujący skrypt w głównej bazie danych:

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

Dane wyjściowe nie mogą być puste i wyglądają następująco:

Pamiętaj, że powyższe wartości mogą się różnić na twoim komputerze, co jest normalne, o ile widzisz wiersz, oznacza to, że baza danych statystyk języka semantycznego została pomyślnie zainstalowana na twojej instancji SQL.

Korzystanie z wyszukiwania semantycznego

Po skonfigurowaniu wyszukiwania semantycznego jesteśmy gotowi do użycia go w SQL Server.

Scenariusz wyszukiwania semantycznego

Zamierzamy przechowywać dokumenty pracowników (próbki) w formacie tekstu sformatowanego w bazie danych SQL Server, które będą później przeszukiwane i porównywane za pomocą wyszukiwania semantycznego.

Skonfiguruj przykładową bazę danych pracowników

Utwórz przykładową bazę danych z pojedynczą tabelą, uruchamiając skrypt T-SQL względem głównej bazy danych w następujący sposób:

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

Sprawdź przykładową bazę danych

Uruchom następujący skrypt tylko po to, aby sprawdzić przykładową tabelę bazy danych:

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

Dane wyjściowe są następujące:

Dodaj pierwszy plik sformatowanego tekstu za pomocą dbForge Studio dla SQL Server

Zamierzamy dodać dane binarne do tabel, które są reprezentowane przez sformatowane pliki tekstowe, używając dbForge Studio dla SQL Server .

Otwórz przykładową bazę danych EmployeesSample w dbForge Studio dla SQL Server.

Kliknij prawym przyciskiem myszy PracownicyForSemanticSearch tabeli i kliknij Pobierz dane:

Dodaj następujące dane do EmployeesForSemanticSearch tabela z wyjątkiem EmpDocument kolumna po upewnieniu się, że tabela nie jest w trybie tylko do odczytu:

Identyfikator:1

DocumentName:Employee1Document

EmpDocument:(null)

EmpDocumentType:.rtf

Wstaw dokument w formacie RTF do EmpDocument kolumnę, dodając następujący tekst do tabeli (klikając wielokropek i dodając dane):

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.

Zapisz dokument jako Employee1Document.rtf w dowolnym odpowiednim folderze Windows:

Zastosuj zmiany, aby sprawdzić, czy plik z tekstem sformatowanym został pomyślnie zapisany w tabeli:

Dodaj drugi plik z tekstem sformatowanym za pomocą dbForge Studio dla SQL Server

Następnie dodaj kolejny plik sformatowanego tekstu do EmployeesForSemanticSearch w taki sam sposób jak powyżej, korzystając z następujących informacji:

Identyfikator:2

DocumentName:Employee2Document

EmpDocument:(null)

EmpDocumentType:.rtf

Dodaj kolejny plik z tekstem sformatowanym z następującym tekstem:

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.

Zapisz dokument w tym samym folderze w następujący sposób:

Zapisz dane, odświeżając tabelę, a następnie potwierdzając wprowadzone zmiany, klikając tak:

Utwórz unikalny indeks, indeks pełnotekstowy i indeks semantyczny za pomocą kreatora

Wróć do SSMS (SQL Server Management Studio), kliknij prawym przyciskiem myszy tabelę i kliknij Indeks pełnotekstowy a następnie kliknij Zdefiniuj indeks pełnotekstowy… jak pokazano poniżej:

Następnie musisz wybrać unikalny indeks, który w rzeczywistości jest wybierany domyślnie, ponieważ utworzyliśmy EmpID kolumna klucza podstawowego wcześniej, jak pokazano poniżej, dlatego kliknij Dalej aby kontynuować:

Wybierz EmpDocument z Dostępnych kolumn , brytyjski angielski jako Język łamacza słów , EmpDocumentType jako Wpisz kolumnę i sprawdź Statystyczne wyszukiwanie semantyczne pole w tym samym wierszu w następujący sposób:

Wybierz opcję śledzenia zmian, pozostawiając ją jako ustawienia domyślne, chyba że masz solidny powód, aby zmienić te ustawienia:

Utwórz nowy katalog jako EmployeeCatalog :

Kliknij Dalej ponownie:

Wreszcie po kilku dodatkowych kliknięciach (kliknij Dalej ), wymagana tabela jest gotowa do przeszukiwania przez Wyszukiwanie semantyczne:

Sprawdź, czy wyszukiwanie semantyczne jest włączone dla tabeli

Sprawdź, czy wyszukiwanie semantyczne pozostaje nienaruszone dla tabeli zainteresowania, uruchamiając następujący skrypt w przykładowej bazie danych:

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

Dane wyjściowe powinny wskazywać, że zostało włączone dla trzeciej kolumny, tak jak ustawiliśmy ją na początku instrukcji:

Przykład 1:Wykorzystanie wyniku wyszukiwania semantycznego do znalezienia odpowiedniego dokumentu

Możemy teraz użyć wyszukiwania semantycznego, aby porównać dwa dokumenty w celu znalezienia interesującego słowa kluczowego i jego względnego wyniku, co pomoże nam wskazać bardziej odpowiednie dokumenty.

Jeśli jesteśmy zainteresowani, aby zobaczyć dokument, w którym słowo „badania ” jest wymieniany częściej w porównaniu z innym dokumentem, wtedy musimy zwracać uwagę na wynik każdego z dokumentów, gdy uruchamiamy następujący skrypt T-SQL:

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

Wynik powyższego zapytania jest następujący:

Dokument z najwyższym wynikiem pokazuje, że ma większe znaczenie w porównaniu z innym dokumentem, jeśli chodzi o nasz punkt zainteresowania (badania).

Przykład 2:użycie wyniku wyszukiwania semantycznego do znalezienia odpowiedniego dokumentu

Możemy również znaleźć dokument, w którym słowo „fakt” dominuje w porównaniu z jakimkolwiek innym dokumentem, uruchamiając poniższy skrypt:

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

Wyniki są następujące:

Powyższe wyniki prowadzą do wniosku, że drugi przechowywany dokument jest jedynym dokumentem, w którym słowo fakt jest wspomniane, ale jeśli chcesz sprawdzić te wyniki, otwórz zapisane dokumenty, aby je zobaczyć.

Gratulacje! Pomyślnie nauczyłeś się nie tylko konfigurować wyszukiwanie semantyczne w SQL Server, ale także zdobyłeś praktyczne doświadczenie w korzystaniu z wyszukiwania semantycznego.

Rzeczy do zrobienia

Teraz, gdy możesz skonfigurować i napisać kilka podstawowych zapytań wyszukiwania semantycznego, spróbuj wykonać następujące czynności, aby jeszcze bardziej poprawić swoje umiejętności:

  1. Spróbuj dodać kolejny dokument, który mówi o badaniach a następnie uruchom skrypt w pierwszym przykładzie, aby zobaczyć, który dokument jest najbardziej odpowiednim dokumentem, porównując ich wyniki.
  2. Mając na uwadze ten artykuł, dodaj kolejny dokument, w którym słowo fakt jest wspomniany kilka razy, a następnie uruchom T-SQL w przykładzie 2 tego artykułu, aby sprawdzić, czy wyniki pozostają takie same, czy też się zmieniają.
  3. Spróbuj użyć wyszukiwania semantycznego, dodając więcej dokumentów i więcej tekstu zarówno do istniejących, jak i nowych dokumentów, a następnie znajdź dokumenty pasujące do Twoich interesujących słów.
  4. Przejrzyj przykłady dalej, aby dowiedzieć się na własną rękę, czy w wyszukiwaniu semantycznym rozróżniana jest wielkość liter lub wielkość liter nie jest rozróżniana (wskazówka:możesz nieznacznie zmodyfikować przykłady).

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konfiguracja środowiska startowego w SQL Server Management Studio (SSMS) — samouczek SQL Server / TSQL część 7

  2. serwer sql niepoprawna nazwa obiektu - ale tabele są wymienione na liście tabel SSMS

  3. DBA — jak zabić wszystkie procesy bazy danych na serwerze SQL?

  4. Jak zmniejszyć rozmiar pliku danych w SQL Server (T-SQL)

  5. Wiesz, kiedy ponowić próbę lub zakończyć się niepowodzeniem podczas wywoływania programu SQL Server z C#?