Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Implementando a pesquisa de texto completo no SQL Server 2016 para iniciantes


Este artigo fala sobre a pesquisa de texto completo e sua implementação para iniciantes.

Além disso, os leitores saberão as coisas importantes para fazer a pesquisa de texto completo funcionar corretamente.

Este artigo também destaca a importância de usar a pesquisa de texto completo para corresponder a padrões de texto e atender a tipos semelhantes de requisitos.

Sobre a pesquisa de texto completo


Vamos entender a pesquisa de texto completo com a ajuda de definições.

Definição simples


A pesquisa de texto completo é usada para pesquisar dados baseados em caracteres de maneira otimizada para obter respostas rápidas.

Definição da Microsoft


A pesquisa de texto completo no SQL Server e no Banco de Dados SQL do Azure (versão em nuvem do banco de dados SQL) permite que usuários e aplicativos executem consultas de texto completo em dados baseados em caracteres em tabelas do SQL Server.

O que é consulta de texto completo


Uma consulta de texto completo é um tipo especial de consulta que é escrita e executada em colunas com dados textuais para encontrar padrões de dados. Para isso, a Pesquisa de Texto Completo deve ser habilitada para essas colunas.


Compatibilidade


A pesquisa de texto completo é compatível com as seguintes versões do SQL Server:
  1. SQL Server 2005 e superior
  2. Banco de dados SQL do Azure

Versão moderna da pesquisa de texto completo


Nas versões recentes do SQL Server, como o SQL 2016, a pesquisa de texto completo está disponível para instalação junto com a pesquisa semântica.

Pesquisa de texto completo – SQL Server opcional


Lembre-se de que a pesquisa de texto completo não é instalada por padrão quando você instala o SQL Server. Você precisa instalá-lo opcionalmente adicionando mais recursos à sua instância SQL atual usando a configuração usada originalmente para instalar o SQL Server.

Pesquisa de texto completo - Padrão do banco de dados


Todos os bancos de dados SQL estão prontos para serem usados ​​com a Pesquisa de Texto Completo por padrão. Nenhuma instalação adicional é necessária, exceto os requisitos antes de usar a pesquisa de texto completo em um banco de dados SQL.

Sensibilidade de maiúsculas e minúsculas


De acordo com a documentação da Microsoft, a pesquisa de texto completo não diferencia maiúsculas de minúsculas, portanto, as palavras “painel de controle”, “painel de controle” e “painel de controle” são tratadas da mesma forma.

Configurar pesquisa de texto completo


Conforme mencionado, você precisa adicionar a Pesquisa de Texto Completo como um recurso à sua instalação existente do SQL Server usando o mesmo arquivo de configuração usado para instalar o SQL Server.

Execute o instalador do SQL


Comece executando o instalador do SQL Server. Ele oferece a opção de montar como uma unidade, se você preferir executar diretamente do instalador em vez de salvá-lo.

Executar arquivo de configuração


Clique no arquivo Setup.exe para executar a configuração do SQL Server:


Adicionar como um recurso


Assim que você executar o arquivo de instalação, algumas verificações iniciais serão realizadas. Depois que essas verificações forem aprovadas, você precisa selecionar “adicionar recursos a uma opção de instalação existente” na barra de navegação Instalação (seção):


Escolha seu servidor atual


Em seguida, escolha o servidor atual/potencial para o qual você instalará a pesquisa de texto completo. No nosso caso, é o SQL 2016:


Selecione o recurso de instância a ser adicionado


Em seguida, selecione as Extrações de texto completo e semântica para pesquisa recurso a ser adicionado (se você adicionar esse recurso para versões SQL mais antigas, as Extrações Semânticas podem não ser exibidas):



Observe que, como já adicionei esse recurso antes do passo a passo, ele aparece acinzentado na captura de tela. Mas para quem está adicionando pela primeira vez, ele estará ativo e poderá ser instalado, o que demora um pouco.

Verifique o status de instalação da pesquisa de texto completo


Depois que a pesquisa de texto completo estiver instalada, você poderá verificá-la executando o seguinte script T-SQL no banco de dados mestre:
-- Is Full-Text Search installed then 1 or 0

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

Depois de instalar com sucesso a Pesquisa de Texto Completo, você verá “1” significando que o script está sendo executado:


Pesquisar palavras e frases usando a pesquisa de texto completo


Agora, realizaremos algumas operações básicas de pesquisa de palavras e frases usando a pesquisa de texto completo.

Configurar banco de dados de amostra


Para entender o uso básico da pesquisa de texto completo, vamos configurar um banco de dados de exemplo chamado SQLDevBlogV6 do seguinte modo:
-- 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

Frases e Palavras


Vamos ver mais frases e palavras no contexto da pesquisa de texto completo. Isso lhe dará uma ideia melhor do que você está procurando por meio da pesquisa de texto completo.

A declaração “Introdução ao T-SQL ” é uma frase e “introdução ” e “T-SQL ” são as palavras de interesse.

Etapas para implementar a pesquisa de texto completo no SQL Server


Uma pesquisa de texto completo é implementada das seguintes maneiras:
  1. Crie um catálogo de texto completo (para armazenar índices de texto completo).
  2. Defina Índice de Texto Completo na Tabela ou Visualização Indexada.
  3. Execute consultas de pesquisa de texto completo usando CONTAINS ou FREETEXT para encontrar palavras e frases.

Criar um catálogo de texto completo


Portanto, o banco de dados de exemplo (SQLDevBlogV6) foi criado e preenchido com sucesso. Criar um Catálogo de Texto Completo é a primeira etapa para implementar a Pesquisa de Texto Completo.

Vá para Explorador de Objetos no SQL Server, expanda Bancos de dados nó e clique em SQLDevBlogV6.



Clique em Armazenamento e clique em Catálogos de texto completo, e clique em Novo Catálogo de Texto Completo:



Insira o nome do catálogo como DevBlogCatalog, Clique em OK:



O Catálogo de Texto Completo recém-criado tem a seguinte aparência:


Definir um índice de texto completo na tabela


Clique com o botão direito nos Artigos tabela, clique em Índice de texto completo, e clique em Definir índice de texto completo como mostrado abaixo:



Isso acionará o Assistente de Indexação de Texto Completo. Clique em Avançar e clique em Avançar novamente depois de garantir que a chave primária da tabela seja pré-selecionada pelo assistente.



Na próxima etapa, selecione o Título coluna para consultas de texto completo. Esta é a coluna na qual executaremos nossas consultas de texto completo:



Em seguida, selecione a opção padrão para automatizar o rastreamento de alterações selecionando o botão Automaticamente opção (a menos que você esteja interessado em selecionar alguma outra opção) conforme mostrado abaixo:



Na próxima etapa, escolha o Catálogo de Texto Completo (DevBlogCatalog) para associar ao Índice de Texto Completo que você definiu anteriormente neste passo a passo. Em seguida, clique em Avançar depois de escolher as opções padrão, conforme mostrado abaixo:



Clique em Avançar e pule a etapa opcional e clique em Concluir para ver se o índice de texto completo foi criado com êxito.



Agora podemos executar consultas de texto completo no Título coluna da tabela Artigo graças à ativação da pesquisa de texto completo.

Pesquisar por teste de palavras usando a consulta de texto completo


Agora podemos pesquisar palavras rapidamente usando o CONTAINS palavra-chave (predicado) escrevendo o seguinte script T-SQL:
-- Search for the Word Testing using Full-Text Query

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Os resultados para pesquisar o Teste palavra no Título coluna são os seguintes:



Observe que você pode obter os mesmos resultados usando o operador Like sem pesquisa de texto completo. A diferença é quando você está executando essa consulta em milhões e milhões de linhas e é quando o operador LIKE luta. Enquanto isso, CONTAINS é muito mais rápido, de acordo com os especialistas.

Pesquisar frase para iniciantes usando a consulta de texto completo


Vamos encontrar todos os artigos onde a frase "para iniciantes" é usado no título. Isso ajudará os iniciantes a começar rapidamente.

Desta vez estamos usando o FREETEXT palavra-chave (predicado). Ele nos fornecerá todos os artigos para iniciantes usando o seguinte script T-SQL:
-- Search for Phrase: for beginners using Full-Text Query

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

A saída é a seguinte:



Parabéns, você aprendeu com sucesso os fundamentos da pesquisa de texto completo. Você também tem experiência prática na configuração e execução de consultas de pesquisa de texto completo para palavras e frases.

Fique em contato, pois o próximo artigo descreve o uso avançado da Pesquisa de Texto Completo. Geralmente é útil em cenários de análise de banco de dados.

O que fazer


Agora que você pode configurar a pesquisa de texto completo e executar consultas de texto completo, tente as seguintes coisas para melhorar suas habilidades:
  1. Tente preencher o banco de dados Notas coluna fornecendo mais informações sobre os artigos. Ele deve ser seguido pela definição do Catálogo de Texto Completo e pela execução de consultas de Texto Completo para pesquisar palavras e frases usando as palavras-chave CONTAINS e FREETEXT.
  2. Além disso, pesquise a palavra Unidade para descobrir todos os artigos onde esta palavra é mencionada. Ele pode ser armazenado na coluna como Unit Testing, Unit Test ou Unit Tests.
  3. Consulte o banco de dados de exemplo neste artigo. Configurar pesquisa de texto completo para a tabela Produto, defina o índice de texto completo na coluna nome, e adicione quantos registros puder. Pesquise palavras e frases de sua escolha para encontrar os produtos desejados (nomes).