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

Cómo usar la búsqueda semántica en SQL Server

Este artículo trata los conceptos básicos de la búsqueda semántica, incluido un recorrido completo de la búsqueda semántica:comenzando desde cero y terminando con una función lista para usar.

Además, los lectores aprenderán acerca de algunas de las funciones de búsqueda muy útiles pero no generalmente conocidas disponibles en SQL Server, como la búsqueda semántica, que demostraremos con algunos ejemplos básicos.

Este artículo también enfatiza la importancia de la búsqueda semántica para una forma específica de análisis que no se puede realizar con una búsqueda ordinaria.

¿Qué es la búsqueda semántica?

Primero averigüemos qué es exactamente la búsqueda semántica y en qué se diferencia de la búsqueda de texto completo.

Definición de Microsoft

Según la documentación de Microsoft, la búsqueda semántica proporciona una visión profunda de los documentos no estructurados.

Definición alternativa

La búsqueda semántica es una tecnología o función de búsqueda especial que se utiliza para realizar una búsqueda exhaustiva o un análisis comparativo principalmente en datos o documentos no estructurados, como documentos de MS Word, siempre que los datos no estructurados se almacenen dentro de la base de datos de SQL Server.

Compatibilidad

La búsqueda semántica solo es compatible con SQL Server 2012 y versiones posteriores.

Recuerde que la búsqueda semántica no es compatible con la base de datos SQL de Azure ni con las soluciones en la nube del almacén de datos de Azure.

Esto significa que debe trabajar con una máquina virtual en Azure o en una instancia local de SQL Server para utilizar esta potente función.

Búsqueda semántica frente a búsqueda de texto completo

Según la documentación de Microsoft, la búsqueda de texto completo le permite consultar las palabras en un documento; la búsqueda semántica permite consultar el significado del documento.
La búsqueda semántica junto con la búsqueda de texto completo representa una función conjunta que ofrece Microsoft SQL Server, y puede seleccionar instalarlas durante la instalación de su instancia de SQL Server o más adelante, agregando nuevas funciones a su instancia de SQL existente.

Requisitos

Repasemos los requisitos previos para el uso general de la búsqueda semántica junto con algunas de las cosas necesarias para seguir los tutoriales de este artículo.

Búsqueda de texto completo instalada

Es obligatorio saber cómo configurar la búsqueda de texto completo, ya que la búsqueda de texto completo y la búsqueda semántica se ofrecen como una función conjunta.

Consulte el artículo Implementación de la búsqueda de texto completo en SQL Server 2016 para principiantes para configurar la búsqueda de texto completo, que es un requisito previo para instalar la búsqueda semántica en SQL Server.

Este artículo espera que haya instalado la búsqueda de texto completo en su instancia de SQL Server.

dbForge Studio para SQL Server

El uso de la búsqueda semántica (en el tutorial de este artículo) requiere que los datos no estructurados se almacenen en la base de datos de SQL Server y, en este artículo, lo hicimos usando dbForge Studio para SQL Server en lugar de guardar directamente los datos no estructurados en SQL Server.

Servidor SQL 2016

Estamos usando SQL Server 2016 en este artículo, pero los pasos deberían ser casi los mismos para cualquier otra versión compatible.

Configurar búsqueda semántica

Para utilizar la búsqueda semántica o la búsqueda semántica estadística, puede instalarla durante la instalación de la búsqueda de texto completo o después, agregando la búsqueda de texto completo y la búsqueda semántica como una nueva función.

Comprobación de búsqueda de texto completo

Verifique el estado de instalación de la búsqueda de texto completo y la búsqueda semántica ejecutando el siguiente script en la base de datos maestra:

-- Full-Text Search and Semantic Search status
SELECT SERVERPROPERTY('IsFullTextInstalled') as [Full-Text-Search-and-Semantic-Search-Installed];  
GO

Si el resultado es 1, entonces está listo, pero si es 0, consulte el artículo mencionado anteriormente para instalar la función de búsqueda de texto completo y búsqueda semántica utilizando la configuración de SQL Server.

Instalar base de datos de estadísticas de lenguaje semántico

Instale la base de datos de estadísticas de lenguaje semántico buscando Estadísticas de lenguaje semántico de Microsoft® SQL Server® 2016 en Internet o haciendo clic en el siguiente enlace.

Selección de descarga basada en su edición de Windows:

Instale la base de datos de idiomas:

Haga clic en Siguiente para continuar si está de acuerdo con los términos del contrato de licencia:

Deje las opciones predeterminadas como están, pero se recomienda verificar el costo del disco como se muestra a continuación:

Aunque el archivo solo ocupa alrededor de 747 MB ​​de espacio (al momento de escribir este artículo), verifique el costo del disco para asegurarse de tener suficiente espacio disponible:

Una vez que haya terminado con la verificación del costo del disco, haga clic en Aceptar y luego haga clic en Siguiente .

Se le pedirá que instale el archivo, haga clic en Instalar (si está interesado en hacerlo):

Haga clic en Finalizar una vez que la instalación se haya realizado con éxito, debería verse como la siguiente captura de pantalla:

Busque la carpeta donde se instaló la base de datos de lenguaje semántico de forma predeterminada (C:\Program Files\Microsoft Semantic Language Database):

Todo se ve bien, así que copie el archivo de datos y registro en la carpeta de datos de su instancia de SQL como se muestra a continuación:

Recuerde que la ruta de la carpeta DATA puede variar según su versión de SQL Server.

Adjunte la base de datos de lenguaje semántico a la instancia de SQL

Haga clic derecho en Bases de datos nodo bajo Object Explorer en SSMS (SQL Server Management Studio) y haz clic en Adjuntar :

Agregue Semanticsdb.mdf y haz clic en Aceptar :

Ver la base de datos:

Registrar base de datos semántica

Escriba el siguiente script en la base de datos maestra para registrar la base de datos de estadísticas de lenguaje semántico:

-- Register Semantic Language Statistics Database
EXEC sp_fulltext_semantic_register_language_statistics_db @dbname = N'semanticsdb';  
GO

Comprobar el estado de la base de datos semántica

Compruebe el estado de la base de datos de estadísticas del lenguaje semántico ejecutando el siguiente script en la base de datos maestra:

-- Check Semantic Language Statistics Database status
SELECT * FROM sys.fulltext_semantic_language_statistics_database;  
GO

La salida no debe estar vacía y sería la siguiente:

Recuerde que los valores anteriores pueden diferir en su máquina, lo cual es normal siempre que vea una fila, esto significa que la base de datos de estadísticas de lenguaje semántico se instaló correctamente en su instancia de SQL.

Uso de la búsqueda semántica

Una vez que la búsqueda semántica esté configurada, estaremos listos para usarla en SQL Server.

Escenario de búsqueda semántica

Vamos a almacenar los documentos de los empleados (muestras) en formato de texto enriquecido en la base de datos de SQL Server para buscarlos y compararlos más adelante mediante la búsqueda semántica.

Configurar una base de datos de muestra de empleados

Cree una base de datos de muestra con una sola tabla ejecutando el script T-SQL en la base de datos maestra de la siguiente manera:

-- (1) Setup sample database
Create DATABASE EmployeesSample;
GO

USE EmployeesSample

-- (2) Create EmployeesForSemanticSearch table
CREATE TABLE [dbo].[EmployeesForSemanticSearch](
	[EmpID] [int] NOT NULL,
	[DocumentName] [varchar](200) NULL,
	[EmpDocument] [varbinary](max) NULL,
	[EmpDocumentType] [varchar](200) NULL,
 CONSTRAINT [PK_EmployeesForSemanticSearch_EmpID] PRIMARY KEY CLUSTERED 
(
	[EmpID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

Consulte la base de datos de muestras

Ejecute el siguiente script solo para verificar la tabla de la base de datos de muestra:

-- View all the employees
SELECT efss.EmpID
      ,efss.DocumentName
      ,efss.EmpDocument
      ,efss.EmpDocumentType FROM dbo.EmployeesForSemanticSearch efss

La salida es la siguiente:

Agregue el primer archivo de texto enriquecido usando dbForge Studio para SQL Server

Vamos a agregar datos binarios a las tablas, que se representan mediante archivos de texto enriquecido, usando dbForge Studio para SQL Server .

Abra la base de datos de muestra EmployeesSample en dbForge Studio para SQL Server.

Haga clic derecho en EmployeesForSemanticSearch tabla y haga clic en Recuperar datos:

Agregue los siguientes datos a EmployeesForSemanticSearch excepto por el EmpDocument columna después de asegurarse de que la tabla no está en modo de solo lectura:

EmpID:1

Nombre del documento:Empleado1Documento

EmpDocument:(null)

EmpDocumentType:.rtf

Inserte un documento de formato de texto enriquecido en el EmpDocument columna agregando el siguiente texto en la tabla (haciendo clic en los puntos suspensivos y agregando los datos):

This is a research based article and it is a new research which is in process but this is superb in the field of research.

Guarde el documento como Employee1Document.rtf en cualquier carpeta de Windows adecuada:

Aplique los cambios para comprobar que ha almacenado correctamente un archivo de texto enriquecido en la tabla:

Agregue el segundo archivo de texto enriquecido usando dbForge Studio para SQL Server

A continuación, agregue otro archivo de texto enriquecido a EmployeesForSemanticSearch tabla de la misma manera que arriba usando la siguiente información:

EmpID:2

Nombre del documento:Empleado2Documento

EmpDocument:(null)

EmpDocumentType:.rtf

Agregue otro archivo de texto enriquecido con el siguiente texto:

This is an article which is about facts and figures with little research in it it talks about fact and figures just facts and figures.

Guarde el documento en la misma carpeta de la siguiente manera:

Guarde los datos actualizando la tabla y luego confirmando los cambios que acaba de hacer haciendo clic en sí:

Cree un índice único, un índice de texto completo y un índice semántico con el asistente

De vuelta en SSMS (SQL Server Management Studio), haga clic con el botón derecho en la tabla y haga clic en Índice de texto completo y luego haga clic en Definir índice de texto completo... como se muestra a continuación:

A continuación, debe seleccionar un índice único, que de hecho está seleccionado de forma predeterminada, ya que creamos EmpID columna de clave principal anterior como se muestra a continuación, por lo tanto, haga clic en Siguiente para continuar:

Seleccione EmpDocument de Columnas disponibles , inglés británico como Idioma para Word Breaker , EmpDocumentType como Escribir columna y revisa la Búsqueda Semántica Estadística cuadro en la misma fila de la siguiente manera:

Seleccione la opción de seguimiento de cambios dejándola como configuración predeterminada a menos que tenga una razón sólida para cambiar esta configuración:

Crear un nuevo catálogo como EmployeeCatalog :

Haga clic en Siguiente de nuevo:

Finalmente, después de algunos clics más (haga clic en Siguiente ), la tabla requerida está lista para ser consultada por la búsqueda semántica:

Comprueba si la búsqueda semántica está habilitada para una tabla

Verifique si la búsqueda semántica permanece intacta para la tabla de interés ejecutando el siguiente script en la base de datos de muestra:

-- Check if Semantic Search is enabled for a database, table, and column
SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('EmployeesForSemanticSearch')  
GO

El resultado debe indicar que se ha habilitado para la tercera columna como lo configuramos al comienzo del tutorial:

Ejemplo 1:uso de la puntuación de búsqueda semántica para encontrar un documento relevante

Ahora podemos usar la búsqueda semántica para comparar dos documentos para encontrar una palabra clave de interés y su puntaje relativo, lo que nos ayuda a señalarnos documentos más relevantes.

Si estamos interesados ​​en ver el documento donde aparece la palabra “investigación ” se menciona con más frecuencia en comparación con el otro documento, entonces tenemos que estar atentos a la puntuación de cada uno de los documentos cuando ejecutamos el siguiente script T-SQL:

-- Using Semantic Search to find the score for the word research in both documents
SELECT TOP (100) DOC_TBL.EmpID, DOC_TBL.EmpDocumentType,KEYP_TBL.keyphrase,
KEYP_TBL.score
FROM
EmployeesForSemanticSearch AS DOC_TBL  
    INNER JOIN SEMANTICKEYPHRASETABLE  
    (  
    EmployeesForSemanticSearch,  
    EmpDocument
    ) AS KEYP_TBL  
ON DOC_TBL.EmpID = KEYP_TBL.document_key  
WHERE KEYP_TBL.keyphrase = 'research'  
ORDER BY KEYP_TBL.Score DESC;

El resultado de la consulta anterior es el siguiente:

El documento con la puntuación más alta muestra que tiene más relevancia en comparación con el otro documento en lo que respecta a nuestro punto de interés (investigación).

Ejemplo 2:uso de la puntuación de búsqueda semántica para encontrar un documento relevante

También podemos encontrar el documento donde la palabra "hecho" domina en comparación con cualquier otro documento ejecutando el siguiente script:

-- Using Semantic Search to find the score for the word fact in both documents
SELECT TOP (100) DOC_TBL.EmpID, DOC_TBL.EmpDocumentType,KEYP_TBL.keyphrase,
KEYP_TBL.score
FROM
EmployeesForSemanticSearch AS DOC_TBL  
    INNER JOIN SEMANTICKEYPHRASETABLE  
    (  
    EmployeesForSemanticSearch,  
    EmpDocument
    ) AS KEYP_TBL  
ON DOC_TBL.EmpID = KEYP_TBL.document_key  
WHERE KEYP_TBL.keyphrase = 'fact'  
ORDER BY KEYP_TBL.Score DESC;

Los resultados son los siguientes:

Los resultados anteriores llevan a la conclusión de que el segundo documento almacenado es el único documento donde la palabra hecho se menciona, pero si desea verificar estos resultados, abra los documentos almacenados para verlos.

¡Felicidades! Ha aprendido con éxito no solo a configurar la búsqueda semántica en SQL Server, sino que también ha adquirido experiencia práctica en el uso de la búsqueda semántica.

Cosas que hacer

Ahora que puede configurar y escribir algunas consultas básicas de búsqueda semántica, intente lo siguiente para mejorar aún más sus habilidades:

  1. Intente agregar otro documento que hable sobre investigación y luego ejecute el script en el primer ejemplo para ver qué documento es el documento más relevante comparando sus puntajes.
  2. Teniendo en cuenta este artículo, agregue otro documento donde la palabra hecho se menciona un par de veces y luego ejecute T-SQL en el ejemplo 2 de este artículo para ver si los resultados siguen siendo los mismos o cambian.
  3. Pruebe a utilizar la búsqueda semántica agregando más documentos y más texto a los documentos existentes y nuevos y luego encuentre los documentos que coincidan con sus palabras de interés.
  4. Explore los ejemplos más adelante para averiguar por su cuenta si la búsqueda semántica distingue entre mayúsculas y minúsculas o no (sugerencia:puede modificar ligeramente los ejemplos).