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 efectiva y versátil. Cada vez que se refiere a bases de datos, PostgreSQL es un maestro de todas las manualidades. Combina todas las cosas que ha amado con SQL con una serie de funcionalidades de base de datos que no son SQL. Cualquiera de estas funciones que no sean de SQL, como el tipo de información JSONB, son fantásticas, y ni siquiera tendrá que probar una base de datos diferente. La búsqueda de texto completo se encuentra entre las nuevas características que no son de SQL incorporadas en PostgreSQL. ¿La búsqueda de texto completa 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 privada de agregar una portada más del código, sería una idea fantástica. Ya conoces la búsqueda de patrones en la base de datos MySQL. Entonces, echemos 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 sea las opciones predeterminadas. Si necesita avanzar con consideraciones predeterminadas, deje todas las opciones en blanco y presione ENTER 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 la búsqueda de patrones a través de la palabra clave similar. 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 el 'nombre' de la columna tiene un carácter 'i' en cualquiera de sus valores. Pruebe la consulta de selección a continuación mientras usa la cláusula Me gusta en la cáscara de comandos. De la salida a continuación, puede ver que solo tenemos 5 registros para este carácter 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 similar para hacer una búsqueda rápida de patrones, aunque la palabra está ahí. Tal vez estarías 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 completa y el tipo de datos TSVector se creó para responder a ella. Hay dos métodos en PostgreSQL que hacen justo lo que queremos:

  • To_tvsector: Se usa para hacer una lista de tokens (TS significa "búsqueda de texto").
  • To_tsquery: Utilizado para buscar en el vector incidentes de términos o frases específicas.

Ejemplo 01:

Comencemos con una ilustración simple de crear un vector. Supongamos que desea hacer un vector para la cuerda: “Algunas personas tienen cabello castaño rizado a través del cepillado adecuado.". Por lo tanto, debe escribir una función to_tvsector () junto con esta oración en los soportes de una consulta seleccionada como se adhiere a continuación. De la salida 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 los artículos (el) y las conjunciones (y, o), se ignoran deliberadamente.

>> seleccione TO_TSVECTOR ('Algunas personas tienen pelos castaños rizados a través del cepillado adecuado');

Ejemplo 02:

Suponga que tiene dos documentos con algunos datos en ambos. Para almacenar estos datos, ahora utilizaremos un ejemplo real de generar tokens. Suponga que ha creado una tabla 'datos' en su base de datos 'prueba' con algunas columnas en ella utilizando la consulta de tabla de creación a continuación. No olvide crear una columna de tipo TVSector llamada 'Token'. De la salida a continuación, puede echar un vistazo a la tabla que se ha creado.

>> Crear datos de tabla (ID Clave primaria en serie, texto de información, token tsvector);

Ahora, nos gira agregar los datos generales de ambos documentos en esta tabla. Así que pruebe el siguiente comando insertar 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'.

>> Insertar en valores de datos (información) ('Dos errores nunca pueden hacer uno correcto.'), (' Él es el que puede jugar al fútbol.'), (' ¿Puedo jugar un papel en esto??'), (' El dolor dentro de uno no puede entenderse '), (' trae melocotón en tu vida);

Ahora tiene que colonizar la columna token de ambos documentos con su vector específico. En última instancia, una consulta de actualización simple llenará la columna de tokens por su vector correspondiente para cada archivo. Por lo tanto, debe ejecutar la consulta a continuación establecida en la capa de comandos para hacerlo. La salida muestra que la actualización finalmente se ha realizado.

>> Actualizar datos F1 establecer token = to_tsvector (F1.info) de los datos f2;

Ahora que lo tenemos todo en su lugar, volvamos a nuestra ilustración de "Can One" con un escaneo. A to_tsquery y el operador, 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.

>> seleccione ID, información de datos donde token @@ to_tsquery ('can & one');

Ejemplo 04:

Para encontrar palabras que sean "al lado" entre sí, probaremos la misma consulta con el "operador. El cambio se muestra en la salida a continuación.

>> seleccione ID, información de datos donde token @@ to_tsquery ('can one');

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

>> seleccione ID, información de datos donde token @@ to_tsquery ('un 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 a la distancia de referencia. La proximidad entre 'traer' y 'la vida está a 4 palabras aparte de la imagen mostrada.

>> seleccionar * de datos donde token @@ to_tsquery ('traer vida');

Para verificar la proximidad entre las palabras para casi 5 palabras se adjunta a continuación.

>> seleccionar * de datos donde token @@ to_tsquery ('correcto incorrecto');

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.