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:
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.