sql >> Base de Datos >  >> RDS >> Sqlserver

Implementación de búsqueda de texto completo en SQL Server 2016 para principiantes

Este artículo habla sobre la búsqueda de texto completo y su implementación para que los principiantes comiencen.

Además, los lectores conocerán las cosas importantes para que la búsqueda de texto completo funcione correctamente.

Este artículo también destaca la importancia de utilizar la búsqueda de texto completo para hacer coincidir patrones de texto y cumplir requisitos similares.

Acerca de la búsqueda de texto completo

Entendamos la búsqueda de texto completo con la ayuda de definiciones.

Definición sencilla

La búsqueda de texto completo se utiliza para buscar de manera óptima datos basados ​​en caracteres para obtener respuestas rápidas.

Definición de Microsoft

La búsqueda de texto completo en SQL Server y Azure SQL Database (versión en la nube de la base de datos SQL) permite a los usuarios y aplicaciones ejecutar consultas de texto completo en datos basados ​​en caracteres en tablas de SQL Server.

¿Qué es la consulta de texto completo

Una consulta de texto completo es un tipo especial de consulta que se escribe y ejecuta en columnas con datos textuales para encontrar patrones de datos. Para este asunto, la búsqueda de texto completo debe estar habilitada para esas columnas.

Compatibilidad

La búsqueda de texto completo es compatible con las siguientes versiones de SQL Server:

  1. SQL Server 2005 y superior
  2. Base de datos Azure SQL

Versión moderna de búsqueda de texto completo

En las versiones recientes de SQL Server, como SQL 2016, la búsqueda de texto completo está disponible para su instalación junto con la búsqueda semántica.

Búsqueda de texto completo:SQL Server opcional

Recuerde que la búsqueda de texto completo no está instalada de forma predeterminada cuando instala SQL Server. Tiene que instalarlo opcionalmente agregando más funciones a su instancia SQL actual usando la configuración que usó originalmente para instalar su servidor SQL.

Búsqueda de texto completo:base de datos predeterminada

Todas las bases de datos SQL están listas para usarse con la búsqueda de texto completo de forma predeterminada. No se necesita más instalación, excepto los requisitos antes de usar la búsqueda de texto completo en una base de datos SQL.

Sensible a mayúsculas y minúsculas

Según la documentación de Microsoft, la búsqueda de texto completo no distingue entre mayúsculas y minúsculas, por lo que las palabras "panel de control", "panel de control" y "panel de control" se tratan de la misma manera.

Configurar búsqueda de texto completo

Como se mencionó, debe agregar la búsqueda de texto completo como una función a su instalación existente de SQL Server usando el mismo archivo de instalación que usó para instalar SQL Server.

Ejecutar el instalador de SQL

Comience ejecutando el instalador de SQL Server. Le da la opción de montarlo como una unidad si prefiere ejecutarlo directamente desde el instalador en lugar de guardarlo.

Ejecutar archivo de configuración

Haga clic en el archivo Setup.exe para ejecutar la instalación de SQL Server:

Agregar como característica

Tan pronto como ejecute el archivo de instalación, se llevarán a cabo algunas comprobaciones iniciales. Una vez superadas estas comprobaciones, debe seleccionar "añadir funciones a una opción de instalación existente" en la barra de navegación de instalación (sección):

Elija su servidor actual

A continuación, elija su servidor actual/potencial para el que instalará la búsqueda de texto completo. En nuestro caso, es SQL 2016:

Seleccione la función de instancia que se agregará

A continuación, seleccione Extracciones semánticas y de texto completo para la búsqueda función que se agregará (si agrega esta función para versiones anteriores de SQL, es posible que no se muestren las extracciones semánticas):

Tenga en cuenta que, dado que ya agregué esta función antes del tutorial, aparece atenuada en la captura de pantalla. Pero para cualquiera que lo añada por primera vez, estará activo y se podrá instalar, lo que lleva un poco de tiempo.

Comprobar el estado de instalación de la búsqueda de texto completo

Una vez instalada la búsqueda de texto completo, puede verificarla ejecutando el siguiente script T-SQL en la base de datos maestra:

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

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

Una vez que haya instalado correctamente la búsqueda de texto completo, verá "1", lo que significa que el script se está ejecutando:

Búsqueda de palabras y frases mediante la búsqueda de texto completo

Ahora, realizaremos algunas operaciones básicas de búsqueda de palabras y frases mediante la búsqueda de texto completo.

Configurar base de datos de muestra

Para comprender el uso básico de la búsqueda de texto completo, configuremos una base de datos de muestra llamada SQLDevBlogV6 de la siguiente manera:

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

Veamos más frases y palabras en el contexto de la búsqueda de texto completo. Esto le dará una mejor idea de lo que está buscando a través de la búsqueda de texto completo.

La declaración “Introducción a T-SQL ” es una frase y “introducción ” y “T-SQL ” son las palabras de interés.

Pasos para implementar la búsqueda de texto completo en SQL Server

Una búsqueda de texto completo se implementa de las siguientes maneras:

  1. Cree un catálogo de texto completo (para almacenar índices de texto completo).
  2. Definir índice de texto completo en tabla o vista indexada.
  3. Ejecute consultas de búsqueda de texto completo usando CONTAINS o FREETEXT para encontrar palabras y frases.

Crear un catálogo de texto completo

Por lo tanto, la base de datos de muestra (SQLDevBlogV6) se creó y se completó correctamente. La creación de un catálogo de texto completo es el primer paso para implementar la búsqueda de texto completo.

Vaya a Explorador de objetos en SQL Server, expanda Bases de datos y luego haga clic en SQLDevBlogV6.

Haz clic en Almacenamiento , luego haga clic en Catálogos de texto completo, y luego haga clic en Nuevo catálogo de texto completo:

Ingrese el nombre del catálogo como DevBlogCatalog, Haga clic en Aceptar:

El catálogo de texto completo recién creado tiene el siguiente aspecto:

Definir un índice de texto completo en la tabla

Haga clic derecho en los Artículos tabla, haga clic en Índice de texto completo, y luego haga clic en Definir índice de texto completo como se muestra a continuación:

Esto activará el asistente de indexación de texto completo. Haga clic en Siguiente y luego haga clic en Siguiente nuevamente después de asegurarse de que el asistente preseleccionó la clave principal de la tabla.

En el siguiente paso, seleccione el Título columna para consultas de texto completo. Esta es la columna en la que vamos a ejecutar nuestras consultas de texto completo:

A continuación, seleccione la opción predeterminada para automatizar el seguimiento de cambios seleccionando Automáticamente opción (a menos que esté interesado en seleccionar alguna otra opción) como se muestra a continuación:

En el siguiente paso, elija el catálogo de texto completo (DevBlogCatalog) para asociarlo con el índice de texto completo que definió anteriormente en este tutorial. Luego haga clic en Siguiente después de elegir las opciones predeterminadas como se muestra a continuación:

Haga clic en Siguiente y omita el paso opcional, luego haga clic en Finalizar para ver que el índice de texto completo se ha creado correctamente.

Ahora podemos ejecutar consultas de texto completo contra el Título columna de la tabla Artículo gracias por habilitar la búsqueda de texto completo.

Buscar pruebas de palabras mediante consulta de texto completo

Ahora podemos buscar palabras rápidamente usando CONTIENE palabra clave (predicado) escribiendo el siguiente script T-SQL:

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

SELECT * FROM dbo.Article

WHERE CONTAINS(Title,'Testing')

Los resultados para buscar las Pruebas palabra en el Título columna son las siguientes:

Tenga en cuenta que puede obtener los mismos resultados utilizando el operador Me gusta sin la búsqueda de texto completo. La diferencia es cuando está ejecutando esta consulta contra millones y millones de filas y aquí es cuando el operador LIKE tiene problemas. Mientras tanto, CONTAINS es mucho más rápido según los expertos.

Buscar frase para principiantes mediante consulta de texto completo

Busquemos todos los artículos donde la frase “para principiantes” se utiliza en el título. Esto ayudará a los principiantes a comenzar rápidamente.

Esta vez estamos usando el FREETEXT palabra clave (Predicado). Obtendrá todos los artículos para principiantes utilizando el siguiente script T-SQL:

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

SELECT * FROM dbo.Article

WHERE FREETEXT(Title,'for beginners')

La salida es la siguiente:

Felicitaciones, ha aprendido con éxito los conceptos básicos de la búsqueda de texto completo. También obtuvo experiencia práctica en la configuración y ejecución de consultas de búsqueda de texto completo para palabras y frases.

Manténgase en contacto ya que el próximo artículo describe el uso avanzado de la búsqueda de texto completo. Suele ser útil en escenarios de análisis de bases de datos.

Cosas que hacer

Ahora que puede configurar la búsqueda de texto completo y ejecutar consultas de texto completo, intente lo siguiente para mejorar sus habilidades:

  1. Intente llenar la base de datos Notas columna proporcionando más información sobre los artículos. A continuación, debe definir el catálogo de texto completo y ejecutar consultas de texto completo para buscar palabras y frases utilizando las palabras clave CONTAINS y FREETEXT.
  2. Además, busque la palabra Unidad para conocer todos los artículos donde se menciona esta palabra. Puede almacenarse en la columna como Prueba unitaria, Prueba unitaria o Pruebas unitarias.
  3. Consulte la base de datos de muestra en este artículo. Configurar la búsqueda de texto completo para la tabla Producto, definir el índice de texto completo en la columna nombre, y agregue tantos registros como pueda. Busque palabras y frases de su elección para encontrar los productos deseados (nombres).