PostgreSQL

Ejemplos de búsqueda de texto completo de PostgreSQL

Ejemplos de búsqueda de texto completo de PostgreSQL
Cualquier base de datos debe tener una capacidad de búsqueda eficaz y versátil. Siempre que se refiere a bases de datos, PostgreSQL es un maestro en todos los oficios. Combina todas las cosas que ha llegado a amar con SQL con una gran cantidad de funcionalidades de bases de datos que no son SQL. Cualquiera de estas funciones que no son de SQL, como la clasificación de información JSONB, son fantásticas y ni siquiera tendría que probar una base de datos diferente. La búsqueda de texto completo se encuentra entre las funciones no SQL más nuevas incorporadas en PostgreSQL. ¿La búsqueda de texto completo de PostgreSQL es completamente funcional o desea un índice de búsqueda distinto?? Si de alguna manera puede desarrollar una búsqueda de texto completa sin agregar una cubierta más de código, sería una idea fantástica. Ya está familiarizado con la búsqueda de patrones en la base de datos MySQL. Entonces, echémosle un vistazo primero. Abra el shell de línea de comandos de PostgreSQL en su sistema informático. Escriba el título del servidor, el nombre de la base de datos, el número de puerto, el nombre de usuario y la contraseña para el usuario específico que no sean las opciones predeterminadas. Si necesita trabajar con las consideraciones predeterminadas, deje todas las opciones en blanco y presione Entrar en cada opción. Por el momento, su shell de línea de comandos está equipado para trabajar en.

Para comprender el concepto de búsqueda de texto completo, debe recordar el conocimiento de búsqueda de patrones a través de la palabra clave LIKE. Entonces, supongamos una tabla 'persona' en la base de datos 'prueba' con los siguientes registros en ella.

>> SELECCIONAR * DE la persona;

Supongamos que desea obtener los registros de esta tabla, donde la columna 'nombre' tiene un carácter 'i' en cualquiera de sus valores. Pruebe la siguiente consulta SELECT mientras usa la cláusula LIKE en el shell de comandos. En el resultado a continuación, puede ver que solo tenemos 5 registros para este carácter en particular 'i' en la columna 'nombre'.

>> SELECCIONAR * DE la persona DONDE nombre COMO '% i%';

Uso de Tvsector:

A veces no sirve de nada usar la palabra clave LIKE para hacer una búsqueda rápida de patrones, aunque la palabra está ahí. Tal vez esté considerando usar expresiones estándar, y aunque esta es una alternativa factible, las expresiones regulares son fuertes y lentas. Tener un vector de procedimiento para palabras completas en un texto, una descripción vernácula de esas palabras, es una forma mucho más eficiente de abordar este problema. El concepto de búsqueda de texto completo y el tipo de datos tsvector fue creado para responder a él. Hay dos métodos en PostgreSQL que hacen exactamente lo que queremos:

Ejemplo 01:

Comencemos con una ilustración simple de la creación de un vector. Suponga que desea hacer un vector para la cuerda: "Algunas personas tienen el cabello castaño rizado con un cepillado adecuado.". Por lo tanto, debe escribir una función to_tvsector () junto con esta oración entre paréntesis de una consulta SELECT como se adjunta a continuación. En el resultado a continuación, puede ver que produciría un vector de referencias (posiciones de archivo) para cada token, y también donde los términos con poco contexto, como artículos (el) y conjunciones (y, o), se ignoran deliberadamente.

>> SELECT to_tsvector ('Algunas personas tienen el pelo castaño rizado si se cepillan adecuadamente');

Ejemplo 02:

Suponga que tiene dos documentos con algunos datos en ambos. Para almacenar estos datos, ahora usaremos un ejemplo real de generación de tokens. Suponga que ha creado una tabla 'Datos' en la 'prueba' de su base de datos con algunas columnas utilizando la siguiente consulta CREAR TABLA. No olvide crear una columna de tipo TVSECTOR llamada 'token' en ella. De la salida a continuación, puede echar un vistazo a la tabla que se ha creado.

>> CREAR TABLA Datos (Id. SERIAL PRIMARY KEY, info TEXT, token TSVECTOR);

Ahora, nos toca agregar los datos generales de ambos documentos en esta tabla. Así que pruebe el siguiente comando INSERT en su shell de línea de comandos para hacerlo. Finalmente, los registros de ambos documentos se han agregado con éxito a la tabla 'Datos'.

>> INSERT INTO Data (info) VALUES ('Dos errores nunca pueden hacer que uno sea correcto.'), (' Él es el que puede jugar al fútbol.'), (' ¿Puedo participar en este?'), (' El dolor dentro de uno no se puede entender '), (' Trae melocotón a tu vida);

Ahora tienes que colonizar la columna de token de ambos documentos con su vector específico. En última instancia, una simple consulta de ACTUALIZACIÓN llenará la columna de tokens con su vector correspondiente para cada archivo. Por lo tanto, debe ejecutar la consulta que se indica a continuación en el shell de comandos para hacerlo. El resultado muestra que la actualización finalmente se realizó.

>> ACTUALIZAR Datos f1 SET token = to_tsvector (f1.info) FROM Data f2;

Ahora que lo tenemos todo en su lugar, volvamos a nuestra ilustración de "lata uno" con un escaneo. To_tsquery con el operador AND, como se dijo anteriormente, no hace ninguna diferencia entre las ubicaciones de los archivos en los archivos como se muestra en la salida que se indica a continuación.

>> SELECCIONAR ID, información DESDE los datos DONDE token @@ to_tsquery ('can & one');

Ejemplo 04:

Para encontrar palabras que están "al lado" una de la otra, intentaremos la misma consulta con el '<->'operador. El cambio se muestra en la salida a continuación.

>> SELECCIONAR ID, información DESDE los datos DONDE token @@ to_tsquery ('can <-> uno');

Aquí hay un ejemplo de una palabra no inmediata junto a otra.

>> SELECCIONAR ID, información DESDE los datos DONDE token @@ to_tsquery ('uno <-> dolor');

Ejemplo 05:

Encontraremos las palabras que no están inmediatamente una al lado de la otra usando un número en el operador de distancia para hacer referencia a la distancia. La proximidad entre 'traer' y 'vida es de 4 palabras aparte de la imagen mostrada.

>> SELECCIONAR * DE Datos DONDE token @@ to_tsquery ('traer <4> la vida');

Para comprobar la proximidad entre las palabras de casi 5 palabras se adjunta a continuación.

>> SELECCIONAR * DE Datos DONDE token @@ to_tsquery ('incorrecto <5> derecho');

Conclusión:

Finalmente, ha realizado todos los ejemplos simples y complicados de búsqueda de texto completo utilizando los operadores y funciones To_tvsector y to_tsquery.

Los 5 mejores productos ergonómicos de mouse de computadora para Linux
¿El uso prolongado de la computadora causa dolor en la muñeca o los dedos?? ¿Sufre de rigidez en las articulaciones y constantemente tiene que dar la ...
Cómo cambiar la configuración del mouse y el panel táctil con Xinput en Linux
La mayoría de las distribuciones de Linux se envían con la biblioteca "libinput" de forma predeterminada para manejar eventos de entrada en un sistema...
Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...