sql >> Databáze >  >> RDS >> Sqlserver

Implementace fulltextového vyhledávání v SQL Server 2016 pro začátečníky

Tento článek pojednává o fulltextovém vyhledávání a jeho implementaci pro začátečníky.

Kromě toho budou čtenáři vědět, co je důležité pro správné fungování fulltextového vyhledávání.

Tento článek také zdůrazňuje důležitost používání Fulltextového vyhledávání ke shodě textových vzorů a splnění podobných druhů požadavků.

O fulltextovém vyhledávání

Pojďme pochopit fulltextové vyhledávání pomocí definic.

Jednoduchá definice

Fulltextové vyhledávání se používá k optimálnímu vyhledávání dat založených na znacích pro rychlé odpovědi.

Definice společnosti Microsoft

Fulltextové vyhledávání na serveru SQL Server a Azure SQL Database (cloudová verze databáze SQL) umožňuje uživatelům a aplikacím spouštět fulltextové dotazy na znaková data v tabulkách SQL Server.

Co je to fulltextový dotaz

Fulltextový dotaz je speciální druh dotazu, který je zapsán a spuštěn proti sloupcům s textovými daty, aby se našly vzory dat. V tomto případě by mělo být pro tyto sloupce povoleno Fulltextové vyhledávání.

Kompatibilita

Fulltextové vyhledávání je kompatibilní s následujícími verzemi serveru SQL:

  1. SQL Server 2005 a novější
  2. Azure SQL Database

Moderní verze fulltextového vyhledávání

V nejnovějších verzích SQL Serveru, jako je SQL 2016, je k instalaci k sémantickému vyhledávání k dispozici fulltextové vyhledávání.

Fulltextové vyhledávání – SQL Server volitelné

Pamatujte, že při instalaci SQL Serveru není ve výchozím nastavení nainstalováno fulltextové vyhledávání. Musíte jej nainstalovat volitelně přidáním dalších funkcí do vaší aktuální instance SQL pomocí nastavení, které jste původně použili k instalaci vašeho SQL Serveru.

Fulltextové vyhledávání – výchozí databáze

Všechny databáze SQL jsou standardně připraveny k použití s ​​fulltextovým vyhledáváním. Není potřeba žádná další instalace kromě požadavků před použitím Fulltextového vyhledávání v SQL databázi.

Rozlišovat malá a velká písmena

Podle dokumentace Microsoftu fulltextové vyhledávání nerozlišuje velká a malá písmena, takže se slovy „ovládací panel“, „ovládací panel“ a „ovládací panel“ se zachází stejně.

Nastavení fulltextového vyhledávání

Jak již bylo zmíněno, musíte do své stávající instalace serveru SQL přidat funkci Full-Text Search pomocí stejného instalačního souboru, který jste použili k instalaci serveru SQL.

Spusťte instalační program SQL

Začněte spuštěním instalačního programu SQL Server. Dává vám možnost připojit se jako disk, pokud dáváte přednost spouštění přímo z instalačního programu namísto jeho ukládání.

Spusťte instalační soubor

Klepnutím na soubor Setup.exe spusťte nastavení serveru SQL:

Přidat jako funkci

Jakmile spustíte instalační soubor, budou provedeny počáteční kontroly. Jakmile tyto kontroly projdou, musíte vybrat „přidat funkce k existující možnosti instalace“ pod navigační lištou Instalace (sekce):

Vyberte svůj aktuální server

Dále vyberte svůj aktuální/potenciální server, pro který se chystáte instalovat Fulltextové vyhledávání. V našem případě je to SQL 2016:

Vyberte funkci instance, kterou chcete přidat

Dále vyberte Fulltextové a sémantické extrakce pro vyhledávání funkce, která má být přidána (pokud tuto funkci přidáte pro starší verze SQL, sémantické extrakce se nemusí zobrazit):

Upozorňujeme, že vzhledem k tomu, že jsem tuto funkci přidal již před tímto návodem, je na snímku obrazovky zašedlá. Ale pro každého, kdo jej přidává poprvé, bude aktivní a bude jej možné nainstalovat, což chvíli trvá.

Zkontrolujte stav instalace fulltextového vyhledávání

Jakmile je fulltextové vyhledávání nainstalováno, můžete jej zkontrolovat spuštěním následujícího skriptu T-SQL proti hlavní databázi:

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

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

Jakmile úspěšně nainstalujete Full-Text Search, uvidíte „1“, což znamená, že skript běží:

Vyhledávání slov a frází pomocí fulltextového vyhledávání

Nyní provedeme některé základní vyhledávací operace pro slova a fráze pomocí Full-Text Search.

Nastavení ukázkové databáze

Abychom porozuměli základnímu použití fulltextového vyhledávání, nastavíme ukázkovou databázi nazvanou SQLDevBlogV6 takto:

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

Fráze a slova

Podívejme se na další fráze a slova v kontextu fulltextového vyhledávání. Díky tomu budete mít lepší představu o tom, co hledáte prostřednictvím fulltextového vyhledávání.

Prohlášení „Úvod do T-SQL “ je fráze a „úvod “ a „T-SQL “ jsou zajímavá slova.

Kroky k implementaci fulltextového vyhledávání na SQL Server

Fulltextové vyhledávání je implementováno následujícími způsoby:

  1. Vytvořte fulltextový katalog (k ukládání fulltextových indexů).
  2. Definujte fulltextový index v tabulce nebo indexovaném zobrazení.
  3. Spouštějte fulltextové vyhledávací dotazy pomocí CONTAINS nebo FREETEXT k vyhledání slov a frází.

Vytvořit fulltextový katalog

Ukázková databáze (SQLDevBlogV6) byla tedy úspěšně vytvořena a naplněna. Vytvoření fulltextového katalogu je prvním krokem k implementaci fulltextového vyhledávání.

Přejděte do Průzkumníka objektů v SQL Server rozbalte Databáze uzel a poté klikněte na SQLDevBlogV6.

Klikněte na Úložiště a poté klikněte na Plnotextové katalogy a poté klikněte na Nový fulltextový katalog:

Zadejte název katalogu jako DevBlogCatalog, Klikněte na OK:

Nově vytvořený fulltextový katalog vypadá následovně:

Definujte fulltextový index v tabulce

Klikněte pravým tlačítkem na Články tabulky, klikněte na Celotextový index, a poté klikněte na Definovat fulltextový index jak je uvedeno níže:

Tím se spustí Průvodce fulltextovým indexováním. Klikněte na Další a poté klikněte na Další znovu poté, co se ujistíte, že primární klíč tabulky je předem vybrán průvodcem.

V dalším kroku vyberte Název sloupec pro fulltextové dotazy. Toto je sloupec, proti kterému budeme spouštět naše fulltextové dotazy:

Dále vyberte výchozí možnost pro automatizaci sledování změn výběrem možnosti Automaticky možnost (pokud nemáte zájem vybrat jinou možnost), jak je uvedeno níže:

V dalším kroku vyberte Fulltextový katalog (DevBlogCatalog), který chcete přiřadit k Fulltextovému indexu, který jste definovali dříve v tomto návodu. Poté klikněte na Další po výběru výchozích možností, jak je uvedeno níže:

Klikněte na Další a přeskočte volitelný krok a poté klikněte na Dokončit abyste viděli, že Fulltextový index byl úspěšně vytvořen.

Nyní můžeme spouštět fulltextové dotazy proti Titulu sloupec tabulky Článek díky povolení Fulltextového vyhledávání.

Vyhledávání slovního testování pomocí fulltextového dotazu

Nyní můžeme rychle vyhledávat slova pomocí OBSAHUJE klíčové slovo (predikát) napsáním následujícího T-SQL skriptu:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Výsledky vyhledávání Testování slovo v Názvu jsou následující:

Upozorňujeme, že stejné výsledky můžete získat pomocí operátoru Like bez fulltextového vyhledávání. Rozdíl je, když spouštíte tento dotaz proti milionům a milionům řádků, a to je, když operátor LIKE bojuje. Mezitím je CONTAINS podle odborníků mnohem rychlejší.

Hledání fráze pro začátečníky pomocí fulltextového dotazu

Pojďme najít všechny články, kde je fráze „pro začátečníky“ se používá v názvu. To pomůže začátečníkům rychle začít.

Tentokrát používáme FREETEXT klíčové slovo (predikát). Získáme všechny články pro začátečníky pomocí následujícího skriptu T-SQL:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

Výstup je následující:

Gratulujeme, úspěšně jste se naučili základy fulltextového vyhledávání. Také jste získali praktické zkušenosti s nastavením a spouštěním fulltextových vyhledávacích dotazů pro slova a fráze.

Zůstaňte v kontaktu, protože nadcházející článek popisuje pokročilé využití Fulltextového vyhledávání. To je často užitečné ve scénářích analýzy databáze.

Úkoly

Nyní, když můžete nastavit fulltextové vyhledávání a spouštět fulltextové dotazy, vyzkoušejte prosím následující věci, abyste zlepšili své dovednosti:

  1. Zkuste naplnit databázi Poznámky poskytnutím dalších informací o článcích. Po něm by mělo následovat definování Fulltextového katalogu a spuštění fulltextových dotazů pro vyhledávání slov a frází pomocí klíčových slov CONTAINS a FREETEXT.
  2. Vyhledejte také slovo Jednotka zjistit všechny články, kde je toto slovo zmíněno. Může být uložen ve sloupci jako Unit Testing, Unit Test nebo Unit Tests.
  3. Nahlédněte do ukázkové databáze v tomto článku. Nastavení fulltextového vyhledávání v tabulce Produkt, definujte fulltextový index ve sloupci name, a přidejte co nejvíce záznamů. Hledejte slova a fráze podle svého výběru a najděte požadované produkty (názvy).


  1. Jsou mysql_real_escape_string() a mysql_escape_string() dostatečné pro zabezpečení aplikace?

  2. 3 způsoby, jak vypsat všechny spouštěče pro danou tabulku v PostgreSQL

  3. Index oddílu Oracle

  4. Pochopení výkonu dotazů PostgreSQL