PostgreSQL Fuzzy Search

PostgreSQL Fuzzy Search
Una palabra difusa conduce a parcial o poco clara. Esta búsqueda se ocupa del resultado que no ve la búsqueda precisa o perfecta. La búsqueda difusa de datos en PostgreSQL contiene diferentes enfoques. Ya sea a través de extensiones o algoritmos. Pero el fenómeno se aplica en ambos sentidos. Este artículo contendrá todos los métodos posibles para demostrar el trabajo e implementación de la búsqueda difusa en los datos de PostgreSQL.

Implementación de la búsqueda difusa

Para comprender el concepto de búsqueda difusa, necesitamos crear una tabla. Aquí, se crea una tabla llamada pintor con las columnas de identificación, nombre, nacionalidad, género y birth_year. Cada columna contiene sus tipos de datos respectivamente:

>> Crear pintador de tabla (ID int, nombre Varchar, Nationality Varchar, Gender Varchar, Birth_Year int);

Después de crear la tabla, es hora de pasar datos en las filas de la relación para hacerlo en un estado funcional. Se utiliza una instrucción de inserción para agregar los valores en la tabla:

>> Insertar en el pintor (ID, nombre, nacionalidad, género, nacimiento_year) Valores (1, 'John', 'American', 'Male', '2002'), (2, 'Robert', 'Británico', 'Hombre ',' 1990 '), (3,' Rosee ',' americano ',' femenino ',' 2000 '), (4,' shomia ',' alemán ',' mujer, '1982');

Todos los datos se ingresarán como se muestra a través del mensaje de que 4 filas se ingresan en la tabla.

Los datos ingresados ​​se pueden ver a través de la instrucción SELECT utilizada para obtener todas las filas y columnas de una tabla relevante:

>> seleccionar * del pintor;

Se han mostrado todos los datos. Como saben, la búsqueda difusa es la que causa la coincidencia parcial y trae el resultado que es el más cercano. Entonces intentaremos cada ejemplo de búsqueda difusa.

Ejemplo 1: Buscando a través del filtro comodín

En este ejemplo, obtendremos el registro de la tabla aplicando una condición en la columna de nombre. Cualquier columna puede verse afectada por la búsqueda difusa. Esta situación puede ocurrir cuando conoce el inicio del nombre, pero no está seguro del final, por lo que usamos este operador '%' al final del nombre. Esto se llama filtro comodín. Este símbolo puede ser para cualquier personaje. Por lo tanto, filtraremos los resultados en los que el nombre debe comenzar con 'Rob'. La consulta contiene la instrucción SELECT para obtener la fila de nombre coincidente. Principalmente al aplicar cualquier condición después de la cláusula Where, usamos un símbolo igual '='. Pero, como no estamos seguros sobre los resultados, usaremos 'como' en lugar de ese símbolo '=':

>> seleccionar * del pintor donde el nombre como 'Rob%';

El valor resultante muestra que se obtiene una sola fila. Que coincide con el nombre. Del mismo modo, utilizaremos el operador '%' en ambos extremos. Para que ese filtro busque el nombre del pintor, cuyo nombre puede comenzar o terminar con cualquier combinación de los caracteres:

>> seleccionar * del pintor donde el nombre como '%H%';

Este comando tiene dos filas que tienen el alfabeto 'H' en el centro. De esta manera, puede ver que la coincidencia de cadena difusa funciona en PostgreSQL.

Ejemplo 2:

Usando el mismo concepto, si la palabra que usamos como entrada 'ro', 'b', se elimina, entonces verá que esas filas serán obtenidas cuyo nombre comienza con ro:

>> seleccionar * del pintor donde el nombre como 'ro%';

Por lo tanto, puedes ver que se seleccionan dos filas. Para filtrar los resultados nuevamente, podemos usar este operador de dos maneras aplicándolo en dos columnas. Por ejemplo, se buscará el nombre que comience con la misma palabra 'ro%', pero la columna de nacionalidad se aplicará con el filtro de la fila que comienza con el nombre de nacionalidad 'a%'.

>> seleccionar * del pintor donde el nombre como 'RO%' y la nacionalidad como 'A%';

Por lo tanto, se seleccionará una sola fila de acuerdo con la condición.

Ejemplo 3: Buscando mediante el uso de trigramas

PostgreSQL tiene una extensión útil que se utiliza para habilitar la extensión PG_TRGM. Esta extensión se utiliza para traer algunas características de la búsqueda de cadenas difusas. Los trigramas se forman cuando una cadena se divide en un grupo de tres letras consecutivamente. Primero, necesitamos instalar la extensión en PostgreSQL. Porque sin habilitar la extensión, no podemos aplicar una búsqueda difusa de diferentes maneras:

>> Crear extensión PG_TRGM;

Se agrega una extensión a la base de datos. Ahora, aplicaremos algunos comandos utilizados de acuerdo con las extensiones instaladas. En este tipo de búsqueda, utilizamos la palabra clave 'similitud' para buscar la coincidencia más cercana posible al proporcionar la probabilidad de rango que muestre cuán similares son las cadenas en la escala entre 0 y 1. En el siguiente ejemplo, buscaremos desde la tabla aplicando una cláusula Where que tenga similitud como 'Johr', por lo que se cambia la cuarta letra en la palabra. La búsqueda será de acuerdo con las letras con mistores:

>> seleccione * del pintor donde la similitud (nombre, 'Johr')> 0.4;

El resultado contendrá la fila con el nombre de la columna similar a John que es John en la tabla.

Ahora, aplicaremos el concepto de similitud a la columna de nacionalidad en las filas que contienen 'An' en la cadena presente en los datos PostgreSQL. El resultante se limitará a las 2 filas:

>> seleccionar * del orden del pintor por similitud (nacionalidad, 'an') límite 2;

El resultante contendrá solo dos filas, ya que hemos aplicado el límite. Entonces esas filas que tienen la nacionalidad de contener 'y' se mostrarán.

Ejemplo 4: Buscando algoritmos fonéticos

Otra forma de buscar es mediante el uso de algoritmos fonéticos. Estos algoritmos usan las reglas utilizadas para representar una cadena utilizando un código corto. Para este propósito, PostgreSQL utiliza una extensión para instalarse para que podamos habilitar el funcionamiento de la búsqueda. Esta extensión es un combate de cadena difusa:

>> Crear extensión FuzzyStrmatch;

Después de instalar la extensión, utilizaremos cualquier característica de la extensión. Por ejemplo, utilizaremos una característica conocida como Metaphone.

Metáfono: Este algoritmo se usa para devolver el código de diferentes longitudes. Esta es como la función simple que usamos en PostgreSQL. Del mismo modo, podemos pasar argumentos a esta función. Por ejemplo, se especifica la longitud que devuelve el valor a esa longitud.

En el ejemplo, seleccionaremos la identificación, el nombre y una nueva columna con el nombre de metafono que acortará el nombre del pintor para formar una abreviatura. La cláusula Where contendrá una condición para buscar la nacionalidad igual a los estadounidenses:

>> seleccionar ID, nombre, metafono (nombre, 10) del pintor donde la nacionalidad = 'americano' límite 2;

Puede ver que en la ejecución, la columna de metafono contendrá las formas acortadas de los nombres del pintor.

Conclusión

Este artículo arroja luz a la búsqueda parcial de los datos aplicando cadenas difusas que coinciden. Si el usuario desconoce los nombres completos o el nombre parcial, puede obtener fácilmente la información sobre el registro utilizando este tipo de búsqueda. Hemos utilizado ejemplos elementales con respecto a los algoritmos y extensiones en PostgreSQL. Esperamos que hayas encontrado este artículo útil. Consulte otros artículos de Sugerencia de Linux para obtener más consejos e información.