Tutorial de búsqueda de texto completo de PostgreSQL

Tutorial de búsqueda de texto completo de PostgreSQL
La búsqueda de texto completo es compatible en PostgreSQL. La búsqueda de texto completo es utilizada por motores de búsqueda, tiendas y muchos otros sitios web en todo el mundo.

Por defecto, las búsquedas en la base de datos PostgreSQL son exactas. Lo que eso significa es que, cuando los usuarios buscan 'x y z', la base de datos PostgreSQL busca 'x y z' en orden exacto en los campos de una determinada tabla. Si hay un ligero desajuste, por ejemplo, digamos que tiene 'x y_z', la base de datos no mostrará ningún resultado.

Veamos un escenario de la vida real, entonces tendrá claro qué búsqueda de texto completo y cuál es la necesidad de ello.

Supongamos que tiene una tienda de TI y el usuario buscó 'escritorio y computadora portátil'. No hay problema allí. Pero ¿realmente tienes algún producto que sea un escritorio y una computadora portátil?? ¿Incluso tiene un producto cuyo título dice 'XXX Desktop and Laptop' exactamente como buscó el usuario? Lo que probablemente no! La búsqueda no muestra ningún resultado relevante. El usuario probablemente quería enumerar todas las computadoras en su tienda que puede usar como escritorio y una computadora portátil, muy probablemente una tableta convertible. Dado que la búsqueda no pudo mostrar ningún resultado al usuario, el usuario puede pensar que está agotado o no lo tiene en su tienda de TI. Pero tiene muchas tabletas convertibles que se pueden usar como escritorio y una computadora portátil en la base de datos de su tienda. Si los usuarios no pueden encontrarlo, no obtendrá ninguna venta. Desea que su sitio web enumere todas las computadoras convertibles que tiene en stock cuando los usuarios hacen una consulta de búsqueda como esa. Aquí es donde entra en juego la búsqueda de texto completo. Donde falla una búsqueda ordinaria, la búsqueda de texto completo rescata.

En este artículo, le mostraré cómo realizar una búsqueda de texto completo con PostgreSQL. Empecemos.

Configuración de PostgreSQL para la búsqueda de texto completo

Antes de que pueda practicar la búsqueda de texto completo en PostgreSQL junto conmigo, debe configurar PostgreSQL con algunos datos ficticios. En esta sección, le mostraré cómo agregarlos en PostgreSQL.

Primero, cree una nueva base de datos con el siguiente comando:

$ creadob it_store

Nota: Aquí it_store es el nombre de la base de datos.

Ahora inicie sesión en el shell de PostgreSQL del it_store base de datos que creó con el siguiente comando:

$ psql it_store

Debe iniciarse sesión en PostgreSQL's it_store base de datos como puede ver en la captura de pantalla a continuación.

No voy a ir por la borda aquí. Voy a crear un simple productos Tabla para nuestra base de datos de TI Store. Los campos básicos que necesito son un ID del Producto, Titulo del producto, Descripción del Producto.

El código SQL para la tabla de productos se proporciona a continuación:

Ahora copie y pegue el comando SQL para crear el productos Tabla en el shell PostgreSQL como se muestra en la captura de pantalla a continuación.

Una vez que hayas terminado, productos Se debe crear tabla.

Ahora voy a insertar algunos productos en el productos mesa. Los comandos SQL se dan a continuación.

Los productos se insertan en el productos mesa.

Puede ejecutar el siguiente comando SQL para verificar eso:

$ Select * de productos;

Como puedes ver, el productos están en la tabla de productos.

Búsqueda de texto completo con PostgreSQL

En la sección anterior, le mostré cómo agregar datos ficticios a su base de datos PostgreSQL. En esta sección, le mostraré cómo realizar la búsqueda de texto completo en esos datos con PostgreSQL.

En PostgreSQL, usa dos funciones para realizar una búsqueda de texto completo. Ellos son to_tsvector () y to_tsquery (). Veamos cómo funcionan y usarlos primero.

Un recorrido rápido de to_tsvector () y to_tsquery () Funciones

to_tsvector () la función rompe la cadena de entrada y crea tokens fuera, que luego se usa para realizar la búsqueda de texto completo utilizando el to_tsquery () función.

Ahora para entender que to_tsvector () La función realiza una cadena de entrada, abra PostgreSQL Shell y ejecute el siguiente comando:

# Seleccione TO_TSVECTOR ('Me encanta Linux. Linux es un excelente sistema operativo.');

Como puede ver la salida del to_tsvector () función en la sección marcada de la captura de pantalla a continuación, el to_tsvector () la función rompió las palabras y asignó algunos números en ellas.

Puedes usar to_tsquery () función de la siguiente manera:

# Seleccione Names de campo desde Tablename
Donde to_tsvector (fieldName) @@ to_tsquery (condiciones)

Condiciones de to_tsquery () Función

El to_tsquery () acepta las condiciones que utiliza para comparar con la salida de to_tsvector () función.

Por ejemplo, si está buscando 'laptop y escritorio', debe poner 'Laptop & Desktop' a to_tsquery () función.

Para 'laptop o escritorio', la condición debe ser 'Laptop | escritorio'.

Ahora iré a nuestra base de datos de TI Store para mostrarle algunos ejemplos del mundo real.

Busquemos un dispositivo convertible que pueda usarse como escritorio y computadora portátil como hablé anteriormente.

Ejecute el siguiente comando SQL para hacer eso:

Como puede ver, se encontró la computadora correcta.

También puedes voltear los términos. Por ejemplo, puede buscar 'portátil y escritorio'.

El resultado correcto todavía se muestra.

Supongamos que el usuario quiere enumerar todas las computadoras de escritorio o portátiles en su tienda de TI. La consulta es 'escritorio o computadora portátil' y la condición de to_tsquery () la función debe ser 'Escritorio | computadora portátil' o 'Laptop | escritorio'.

El comando sql es:

Como puede ver, todas las computadoras de la tienda de TI están enumeradas.

Echemos un vistazo a otro ejemplo. El usuario está buscando todas las computadoras portátiles de su tienda pero no las convertibles. La consulta de usuario puede ser 'CAPÍTUTAS NO CONVERTIBLES'. La condición de to_tsquery () la función puede ser '!convertible y portátiles '

El comando sql es:

Como puede ver, se encuentra la computadora portátil correcta.

¿Has notado una cosa?? pongo computadoras portátiles en el to_tsquery() función, pero no hay computadoras portátiles Palabra clave en la descripción del producto. Entonces, ¿cómo lo encontró Postgresql?? Bueno, esa es la magia de la búsqueda de texto completo. Las palabras clave no necesitan ser exactos. PostgreSQL incluso puede manejar algunas palabras plurales, tiempos y muchas más.

Por defecto, la búsqueda de texto completo solo funciona en inglés. Pero PostgreSQL también proporciona soporte para otros idiomas. Consulte la documentación de PostgreSQL para obtener más información al respecto.

Así es como realiza la búsqueda de texto completo en PostgreSQL. Gracias por leer este artículo.