Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Внедряване на пълнотекстово търсене в SQL Server 2016 за начинаещи

Тази статия говори за пълнотекстово търсене и неговото прилагане, за да могат начинаещите да започнат.

Освен това читателите ще знаят важните неща, за да накарат пълнотекстовото търсене да работи правилно.

Тази статия също така подчертава значението на използването на пълнотекстово търсене, за да съответства на текстови шаблони и да отговаря на подобни видове изисквания.

Относно пълнотекстово търсене

Нека разберем пълнотекстово търсене с помощта на дефиниции.

Проста дефиниция

Пълнотекстово търсене се използва за оптимално търсене на данни, базирани на знаци, за бързи отговори.

Определение на Microsoft

Пълнотекстово търсене в SQL Server и Azure SQL база данни (облачна версия на SQL база данни) позволява на потребителите и приложенията да изпълняват пълнотекстови заявки срещу базирани на знаци данни в таблици на SQL Server.

Какво е пълнотекстова заявка

Пълнотекстова заявка е специален вид заявка, която се пише и изпълнява срещу колони с текстови данни, за да се намерят модели на данни. По този въпрос трябва да е активирано пълнотекстово търсене за тези колони.

Съвместимост

Пълнотекстово търсене е съвместимо със следните версии на SQL Server:

  1. SQL Server 2005 и нагоре
  2. Azure SQL база данни

Модерна версия за пълнотекстово търсене

В последните версии на SQL Server, като например SQL 2016, пълнотекстово търсене е достъпно за инсталиране заедно със семантично търсене.

Пълнотекстово търсене – SQL Server по избор

Моля, не забравяйте, че Full-Text Search не се инсталира по подразбиране, когато инсталирате SQL Server. Трябва да го инсталирате по избор, като добавите още функции към текущия си SQL екземпляр, като използвате настройката, която първоначално сте използвали, за да инсталирате своя SQL сървър.

Пълнотекстово търсене – по подразбиране в базата данни

Всички SQL бази данни са готови за използване с пълнотекстово търсене по подразбиране. Не е необходима допълнителна инсталация, освен изискванията преди да използвате пълнотекстово търсене в SQL база данни.

Чувствителност на главни и малки букви

Според документацията на Microsoft пълнотекстовото търсене не е чувствително, така че думите „контролен панел“, „Контролен панел“ и „контролен панел“ се третират еднакво.

Настройте пълнотекстово търсене

Както споменахме, трябва да добавите пълнотекстово търсене като функция към съществуващата си инсталация на SQL Server, като използвате същия инсталационен файл, който сте използвали за инсталиране на SQL Server.

Изпълнете SQL Installer

Започнете, като стартирате инсталатора на SQL Server. Той ви дава възможност да монтирате като устройство, ако предпочитате да стартирате директно от инсталатора, вместо да го запазвате.

Изпълнете инсталационния файл

Щракнете върху файла Setup.exe, за да стартирате настройката на SQL Server:

Добавяне като функция

Веднага след като стартирате инсталационния файл, ще бъдат извършени някои първоначални проверки. След като тези проверки преминат, трябва да изберете „добавяне на функции към съществуваща опция за инсталиране“ под навигационната лента за инсталиране (секция):

Изберете текущия си сървър

След това изберете вашия текущ/потенциален сървър, за който ще инсталирате пълнотекстово търсене. В нашия случай това е SQL 2016:

Изберете функция на екземпляра, която да бъде добавена

След това изберете Пълен текст и семантични извличания за търсене функция за добавяне (ако добавите тази функция за по-стари версии на SQL, семантичните извличания може да не се показват):

Моля, обърнете внимание, тъй като вече добавих тази функция преди ръководството, тя изглежда оцветена в сиво на екранната снимка. Но за всеки, който го добавя за първи път, той ще бъде активен и може да бъде инсталиран, което отнема малко време.

Проверете състоянието на инсталиране на пълнотекстово търсене

След като се инсталира пълнотекстово търсене, можете да го проверите, като изпълните следния T-SQL скрипт срещу основната база данни:

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

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

След като успешно инсталирате Full-Text Search, ще видите „1“, което означава, че скриптът се изпълнява:

Търсене на думи и фрази с помощта на пълнотекстово търсене

Сега ще извършим някои основни операции за търсене на думи и фрази, използвайки пълнотекстово търсене.

Настройте примерна база данни

За да разберем основното използване на пълнотекстово търсене, нека настроим примерна база данни, наречена SQLDevBlogV6 както следва:

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

Фрази и думи

Нека разгледаме повече фрази и думи в контекста на пълнотекстово търсене. Това ще ви даде по-добра представа за това, което търсите чрез пълнотекстово търсене.

Изявлението „Въведение в T-SQL ” е фраза и „въведение ” и „T-SQL ” са интересните думи.

Стъпки за внедряване на пълнотекстово търсене в SQL Server

Пълнотекстово търсене се изпълнява по следните начини:

  1. Създайте каталог с пълен текст (за съхраняване на пълнотекстови индекси).
  2. Дефинирайте индекс на пълен текст в таблица или индексиран изглед.
  3. Изпълнете заявки за пълнотекстово търсене, като използвате CONTAINS или FREETEXT, за да намерите думи и фрази.

Създайте пълнотекстов каталог

И така, примерната база данни (SQLDevBlogV6) е създадена и попълнена успешно. Създаването на пълен текстов каталог е първата стъпка за прилагане на пълнотекстово търсене.

Отидете в Object Explorer в SQL Server, разгънете Бази данни възел и след това щракнете върху SQLDevBlogV6.

Щракнете върху Съхранение , след което щракнете върху Пълнотекстови каталози, и след това щракнете върху Нов пълнотекстов каталог:

Въведете името на каталога като DevBlogCatalog, Щракнете върху OK:

Новосъздаденият пълнотекстов каталог изглежда по следния начин:

Дефинирайте пълнотекстов индекс на таблица

Щракнете с десния бутон върху Статии таблица, щракнете върху Пълен текстов индекс, и след това щракнете върху Define Full-Text index както е показано по-долу:

Това ще задейства съветника за индексиране на пълен текст. Щракнете върху Напред , след което щракнете върху Напред отново след като се уверите, че първичният ключ на таблицата е предварително избран от съветника.

В следващата стъпка изберете Заглавие колона за заявки за пълен текст. Това е колоната, срещу която ще изпълним нашите заявки за пълен текст:

След това изберете опцията по подразбиране, за да автоматизирате проследяването на промените, като изберете Автоматично опция (освен ако не се интересувате да изберете друга опция), както е показано по-долу:

В следващата стъпка, моля, изберете Пълнотекстовия каталог (DevBlogCatalog), който да свържете с пълнотекстовия индекс, който сте дефинирали по-рано в това ръководство. След това щракнете върху Напред, след като изберете опциите по подразбиране, както е показано по-долу:

Щракнете върху Напред и пропуснете незадължителната стъпка, след което щракнете върху Край за да видите, че пълнотекстовият индекс е създаден успешно.

Вече можем да изпълняваме пълнотекстови заявки срещу Заглавие колона на таблицата Статия благодарение на активиране на пълнотекстово търсене.

Търсете тест за думи с помощта на пълнотекстова заявка

Вече можем бързо да търсим думи с помощта на СЪДЪРЖИ ключова дума (предикат), като напишете следния T-SQL скрипт:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Резултатите за търсене в Тестване дума в Заглавието колони са както следва:

Моля, имайте предвид, че можете да получите същите резултати, като използвате оператор Like без пълнотекстово търсене. Разликата е, когато изпълнявате тази заявка срещу милиони и милиони редове и това е, когато операторът LIKE се бори. Междувременно, CONTAINS е много по-бърз според експертите.

Търсете фраза за начинаещи с помощта на пълнотекстова заявка

Нека намерим всички статии, в които фразата „за начинаещи“ се използва в заглавието. Това ще помогне на начинаещите да започнат бързо.

Този път използваме FREETEXT ключова дума (предикат). Той ще ни предостави всички статии за начинаещи, като използва следния T-SQL скрипт:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

Резултатът е както следва:

Поздравления, успешно научихте основите на пълнотекстово търсене. Освен това имате практически опит в настройването и изпълнението на заявки за пълнотекстово търсене на думи и фрази.

Поддържайте връзка, тъй като предстоящата статия описва разширеното използване на пълнотекстово търсене. Често е полезен в сценарии за анализ на база данни.

Неща за правене

Сега, когато можете да настроите пълнотекстово търсене и да изпълнявате пълнотекстови заявки, моля, опитайте следните неща, за да подобрите уменията си:

  1. Опитайте да попълните базата данни Бележки колона, като предоставите повече информация за статиите. Трябва да бъде последвано от дефиниране на Пълнотекстовия каталог и изпълнение на пълнотекстови заявки за търсене на думи и фрази с помощта на ключовите думи СЪДЪРЖИ и FREETEXT.
  2. Още потърсете Единицата на Word за да разберете всички статии, в които се споменава тази дума. Може да се съхранява в колоната като Единично тестване, Единично тестване или Единично тестване.
  3. Вижте примерната база данни в тази статия. Настройка на пълнотекстово търсене за таблицата Продукт, дефинирайте индекса на пълен текст в колоната име, и добавете колкото можете повече записи. Търсете думи и фрази по ваш избор, за да намерите желаните от тях продукти (имена).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пълно ръководство за коригиране на грешка в SQL база данни 5243

  2. Как да разделите стойностите на една колона на стойности на няколко колони?

  3. Неизползван индекс на SQL Server

  4. Доставчикът на OLE DB „Microsoft.Jet.OLEDB.4.0“ не може да се използва за разпределени заявки

  5. Защо SQL Server използва индексно сканиране вместо търсене на индекс, когато клаузата WHERE съдържа параметризирани стойности