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

Implementacja wyszukiwania pełnotekstowego w SQL Server 2016 dla początkujących

Ten artykuł mówi o wyszukiwaniu pełnotekstowym i jego implementacji dla początkujących.

Ponadto czytelnicy będą wiedzieć, co jest ważne, aby wyszukiwanie pełnotekstowe działało prawidłowo.

W tym artykule podkreślono również znaczenie korzystania z wyszukiwania pełnotekstowego w celu dopasowania wzorców tekstu i spełnienia podobnych wymagań.

Informacje o wyszukiwaniu pełnotekstowym

Rozumiemy wyszukiwanie pełnotekstowe za pomocą definicji.

Prosta definicja

Wyszukiwanie pełnotekstowe służy do optymalnego wyszukiwania danych znakowych w celu uzyskania szybkich odpowiedzi.

Definicja Microsoft

Wyszukiwanie pełnotekstowe w SQL Server i Azure SQL Database (wersja bazy danych SQL w chmurze) umożliwia użytkownikom i aplikacjom wykonywanie zapytań pełnotekstowych względem danych znakowych w tabelach SQL Server.

Co to jest zapytanie pełnotekstowe

Zapytanie pełnotekstowe to specjalny rodzaj zapytania, który jest pisany i uruchamiany na kolumnach z danymi tekstowymi w celu znalezienia wzorców danych. W tym celu dla tych kolumn powinno być włączone wyszukiwanie pełnotekstowe.

Kompatybilność

Wyszukiwanie pełnotekstowe jest kompatybilne z następującymi wersjami SQL Server:

  1. SQL Server 2005 i nowsze
  2. Azure SQL Database

Nowoczesna wersja wyszukiwania pełnotekstowego

W najnowszych wersjach SQL Server, takich jak SQL 2016, wyszukiwanie pełnotekstowe jest dostępne do zainstalowania wraz z wyszukiwaniem semantycznym.

Wyszukiwanie pełnotekstowe – opcjonalnie SQL Server

Należy pamiętać, że wyszukiwanie pełnotekstowe nie jest domyślnie instalowane podczas instalacji programu SQL Server. Musisz go zainstalować opcjonalnie, dodając więcej funkcji do bieżącej instancji SQL przy użyciu konfiguracji, której pierwotnie użyłeś do zainstalowania SQL Server.

Wyszukiwanie pełnotekstowe — domyślna baza danych

Wszystkie bazy danych SQL są domyślnie gotowe do użycia z wyszukiwaniem pełnotekstowym. Nie jest potrzebna dalsza instalacja, z wyjątkiem wymagań przed użyciem wyszukiwania pełnotekstowego w bazie danych SQL.

Wrażliwość na wielkość liter

Zgodnie z dokumentacją Microsoft, wyszukiwanie pełnotekstowe nie rozróżnia wielkości liter, więc słowa „panel sterowania”, „panel sterowania” i „panel sterowania” są traktowane tak samo.

Konfiguruj wyszukiwanie pełnotekstowe

Jak wspomniano, musisz dodać Wyszukiwanie pełnotekstowe jako funkcję do istniejącej instalacji SQL Server przy użyciu tego samego pliku instalacyjnego, którego użyłeś do instalacji SQL Server.

Uruchom instalator SQL

Zacznij od uruchomienia instalatora programu SQL Server. Daje możliwość zamontowania jako dysku, jeśli wolisz uruchamiać go bezpośrednio z instalatora, zamiast go zapisywać.

Uruchom plik instalacyjny

Kliknij plik Setup.exe, aby uruchomić instalację SQL Server:

Dodaj jako funkcję

Zaraz po uruchomieniu pliku instalacyjnego zostaną przeprowadzone pewne wstępne sprawdzenia. Po pomyślnym przejściu tych testów należy wybrać „dodaj funkcje do istniejącej opcji instalacji” pod paskiem nawigacji Instalacja (sekcja):

Wybierz swój aktualny serwer

Następnie wybierz swój obecny/potencjalny serwer, dla którego zamierzasz zainstalować wyszukiwanie pełnotekstowe. W naszym przypadku jest to SQL 2016:

Wybierz funkcję instancji do dodania

Następnie wybierz Wyodrębnianie pełnego tekstu i semantyki do wyszukiwania funkcja do dodania (jeśli dodasz tę funkcję dla starszych wersji SQL, Semantic Extractions może nie być wyświetlany):

Pamiętaj, że ponieważ dodałem tę funkcję przed instruktażem, na zrzucie ekranu jest ona wyszarzona. Ale dla każdego, kto dodaje go po raz pierwszy, będzie aktywny i można go zainstalować, co zajmie trochę czasu.

Sprawdź stan instalacji wyszukiwania pełnotekstowego

Po zainstalowaniu wyszukiwania pełnotekstowego możesz to sprawdzić, uruchamiając następujący skrypt T-SQL w bazie danych master:

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

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

Po pomyślnym zainstalowaniu wyszukiwania pełnotekstowego zobaczysz „1”, co oznacza, że ​​skrypt jest uruchomiony:

Wyszukiwanie słów i fraz za pomocą wyszukiwania pełnotekstowego

Teraz wykonamy kilka podstawowych operacji wyszukiwania słów i fraz za pomocą wyszukiwania pełnotekstowego.

Ustaw przykładową bazę danych

Aby zrozumieć podstawowe zastosowanie wyszukiwania pełnotekstowego, skonfigurujmy przykładową bazę danych o nazwie SQLDevBlogV6 w następujący sposób:

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

Zwroty i słowa

Zobaczmy więcej fraz i słów w kontekście wyszukiwania pełnotekstowego. Dzięki temu będziesz miał lepsze wyobrażenie o tym, czego szukasz za pomocą wyszukiwania pełnotekstowego.

Stwierdzenie „Wprowadzenie do T-SQL ” to wyrażenie i „wprowadzenie ” i „T-SQL ” to słowa zainteresowania.

Kroki implementacji wyszukiwania pełnotekstowego w SQL Server

Wyszukiwanie pełnotekstowe jest realizowane w następujący sposób:

  1. Utwórz katalog pełnotekstowy (w celu przechowywania indeksów pełnotekstowych).
  2. Zdefiniuj indeks pełnotekstowy w tabeli lub widoku indeksowanym.
  3. Uruchamiaj zapytania wyszukiwania pełnotekstowego za pomocą CONTAINS lub FREETEXT, aby znaleźć słowa i wyrażenia.

Utwórz katalog pełnotekstowy

Tak więc przykładowa baza danych (SQLDevBlogV6) została pomyślnie utworzona i wypełniona. Utworzenie katalogu pełnotekstowego jest pierwszym krokiem do wdrożenia wyszukiwania pełnotekstowego.

Przejdź do Eksploratora obiektów w programie SQL Server rozwiń Bazy danych węzła, a następnie kliknij SQLDevBlogV6.

Kliknij Pamięć , a następnie kliknij Katalogi pełnotekstowe, a następnie kliknij Nowy katalog pełnotekstowy:

Wpisz nazwę katalogu jako DevBlogCatalog, Kliknij OK:

Nowo utworzony katalog pełnotekstowy wygląda następująco:

Zdefiniuj indeks pełnotekstowy w tabeli

Kliknij prawym przyciskiem myszy Artykuły tabeli, kliknij opcję Indeks pełnotekstowy, a następnie kliknij opcję Zdefiniuj indeks pełnotekstowy jak pokazano poniżej:

Spowoduje to uruchomienie Kreatora indeksowania pełnotekstowego. Kliknij Dalej , a następnie kliknij Dalej ponownie po upewnieniu się, że klucz podstawowy tabeli został wstępnie wybrany przez kreatora.

W następnym kroku wybierz Tytuł kolumna dla zapytań pełnotekstowych. To jest kolumna, względem której będziemy uruchamiać nasze zapytania pełnotekstowe:

Następnie wybierz domyślną opcję automatyzacji śledzenia zmian, wybierając Automatycznie opcja (chyba że jesteś zainteresowany, aby wybrać inną opcję), jak pokazano poniżej:

W następnym kroku wybierz katalog pełnotekstowy (DevBlogCatalog), aby powiązać go z indeksem pełnotekstowym zdefiniowanym wcześniej w tym przewodniku. Następnie kliknij Dalej po wybraniu domyślnych opcji, jak pokazano poniżej:

Kliknij Dalej i pomiń opcjonalny krok, a następnie kliknij przycisk Zakończ aby zobaczyć, że indeks pełnotekstowy został pomyślnie utworzony.

Możemy teraz uruchamiać zapytania pełnotekstowe względem Tytułu kolumna tabeli Artykuł dzięki włączeniu wyszukiwania pełnotekstowego.

Wyszukaj testowanie słów za pomocą zapytania pełnotekstowego

Możemy teraz szybko wyszukiwać słowa za pomocą ZAWIERA słowo kluczowe (predykat), pisząc następujący skrypt T-SQL:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Wyniki wyszukiwania w Testach słowo w tytule kolumny są następujące:

Pamiętaj, że możesz uzyskać te same wyniki, używając operatora Like bez wyszukiwania pełnotekstowego. Różnica polega na tym, że wykonujesz to zapytanie na milionach i milionach wierszy i wtedy występuje problem z operatorem LIKE. Tymczasem CONTAINS jest według ekspertów znacznie szybszy.

Wyszukaj frazę dla początkujących za pomocą zapytania pełnotekstowego

Znajdźmy wszystkie artykuły, w których fraza „dla początkujących” jest używany w tytule. Pomoże to początkującym szybko zacząć.

Tym razem korzystamy z WOLNEGO TEKSTU słowo kluczowe (Predykat). Otrzymamy wszystkie artykuły dla początkujących, korzystając z następującego skryptu T-SQL:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

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

Gratulacje, udało Ci się opanować podstawy wyszukiwania pełnotekstowego. Masz również praktyczne doświadczenie w konfigurowaniu i uruchamianiu zapytań wyszukiwania pełnotekstowego dla słów i fraz.

Pozostań w kontakcie, ponieważ nadchodzący artykuł opisuje zaawansowane użycie wyszukiwania pełnotekstowego. Często jest przydatny w scenariuszach analizy bazy danych.

Rzeczy do zrobienia

Teraz, gdy możesz skonfigurować wyszukiwanie pełnotekstowe i uruchamiać zapytania pełnotekstowe, spróbuj następujących rzeczy, aby poprawić swoje umiejętności:

  1. Spróbuj wypełnić bazę danych Notatki kolumnę, podając więcej informacji o artykułach. Po nim należy zdefiniować katalog pełnotekstowy i uruchomić zapytania pełnotekstowe w celu wyszukania słów i fraz za pomocą słów kluczowych CONTAINS i FREETEXT.
  2. Wyszukaj także słowo Jednostka aby znaleźć wszystkie artykuły, w których występuje to słowo. Może być przechowywany w kolumnie jako Testy jednostkowe, Testy jednostkowe lub Testy jednostkowe.
  3. Zapoznaj się z przykładową bazą danych w tym artykule. Ustaw wyszukiwanie pełnotekstowe dla tabeli Produkt, zdefiniować indeks pełnotekstowy w kolumnie nazwa, i dodaj tyle rekordów, ile możesz. Wyszukaj wybrane słowa i frazy, aby znaleźć pożądane produkty (nazwy).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podstawy łączenia wewnętrznego SQL Server z przykładami

  2. Jak używać klauzuli Where w instrukcji Select w SQL Server — samouczek SQL Server / TSQL, część 109

  3. Korzystanie z krotek w klauzuli SQL IN

  4. Czy istnieje LastIndexOf w SQL Server?

  5. Sekwencja jako wartość domyślna dla kolumny