Postgresql Fuzzy -Suche

Postgresql Fuzzy -Suche
Ein unscharfes Wort führt zu teilweise oder unklar. Diese Suche befasst sich mit dem Ergebnis, bei dem die genaue oder perfekte Suche nicht angezeigt wird. Die Fuzzy -Suche nach Daten in PostgreSQL enthält unterschiedliche Ansätze. Entweder durch Erweiterungen oder Algorithmen. Aber das Phänomen wird auf beide Arten angewendet. Dieser Artikel enthält alle möglichen Methoden, um die Arbeit und Implementierung der Fuzzy -Suche in PostgreSQL -Daten zu demonstrieren.

Implementierung der Fuzzy -Suche

Um das Konzept der Fuzzy -Suche zu verstehen, müssen wir eine Tabelle erstellen. Hier wird eine Tabelle namens Maler mit den Spalten von ID, Namen, Nationalität, Geschlecht und Birth_year erstellt. Jede Spalte enthält jeweils ihre Datentypen:

>> Tabellenmaler erstellen (ID int, Name Varchar, Nationalitätsvarchar, Geschlechtsvarchar, Birgy_year int);

Nachdem die Tabelle erstellt wurde, ist es Zeit, Daten in den Zeilen der Beziehung zu übergeben, um sie in einem funktionalen Zustand zu schaffen. Eine Einfügungsanweisung wird verwendet, um die Werte in der Tabelle hinzuzufügen:

>> In den Maler (ID, Name, Nationalität, Geschlecht, Geburtsgeburte) Werte (1, 'John', 'American', 'Male', '2002'), (2, 'Robert', 'British', 'männlich ',' 1990 '), (3,' Rosee ',' American ',' Female ',' 2000 '), (4,' Shomia ',' Deutsch ',' Frau, '1982');

Alle Daten werden wie in der Nachricht angezeigt, dass 4 Zeilen in die Tabelle eingegeben werden.

Die eingegebenen Daten können über die Auswahlanweisung angezeigt werden, mit der alle Zeilen und Spalten einer relevanten Tabelle abgerufen wurden:

>> aus dem Maler auswählen;

Alle Daten wurden angezeigt. Wie Sie wissen, ist die Fuzzy -Suche diejenige, die die Teilübereinstimmung verursacht und das Ergebnis, das am nächsten kommt. Wir werden also jedes Beispiel für die Fuzzy -Suche ausprobieren.

Beispiel 1: Durchsuchen Sie den Wildcard -Filter

In diesem Beispiel holen wir den Datensatz aus der Tabelle, indem wir eine Bedingung auf die Spalte Name anwenden. Jede Spalte kann durch die Fuzzy -Suche beeinflusst werden. Diese Situation kann auftreten, wenn Sie den Beginn des Namens kennen, aber Sie sind sich nicht sicher über das Ende. Daher verwenden wir diesen Bediener "%" am Ende des Namens. Dies wird als Wildcard -Filter bezeichnet. Dieses Symbol kann für jeden Charakter sein. Wir werden also die Ergebnisse filtern, in denen der Name mit "Rob" beginnen sollte. Die Abfrage enthält die Auswahlanweisung, um die übereinstimmende Name Zeile abzurufen. In erster Linie verwenden wir ein gleiches Symbol '='. Da wir uns jedoch über die Ergebnisse nicht sicher sind, werden wir 'wie' anstelle des '=' Symbols verwenden:

>> Wählen Sie * vom Maler aus, bei dem Name 'Rob%' wie "Rob%";

Der resultierende Wert zeigt, dass eine einzelne Zeile erhalten wird. Das übereinstimmt mit dem Namen. In ähnlicher Weise werden wir den "%" -Portler an beiden Enden verwenden. Dieser Filter sucht also nach dem Namen des Malers, dessen Name mit einer beliebigen Kombination der Zeichen beginnen oder enden kann:

>> Wählen Sie * vom Maler aus, bei dem Name '%H%' wie der Name wie "%H%";

Dieser Befehl enthält zwei Zeilen mit dem Alphabet 'H' in der Mitte. Auf diese Weise können Sie sehen, dass die Fuzzy -String -Matching in PostgreSQL funktioniert.

Beispiel 2:

Wenn das gleiche Konzept verwendet wird, werden Sie feststellen, dass diese Zeilen abgerufen werden, deren Name mit RO:

>> Wählen Sie * vom Maler aus, bei dem Name 'Ro%' wie "Ro%";

Daher können Sie sehen, dass zwei Zeilen ausgewählt werden. Um die Ergebnisse erneut zu filtern, können wir diesen Bediener auf zwei Arten verwenden, indem wir ihn in zwei Spalten anwenden. Zum Beispiel wird der Name, der mit demselben Wort 'Ro%' beginnt, durchsucht, aber die Nationalitätsspalte wird mit dem Filter der Zeile angewendet, beginnend mit dem Nationalitätsnamen "a%".

>> Wählen Sie * vom Maler aus, bei dem Name 'Ro%' und Nationalität wie 'A%' wie 'Ro%';

Somit wird eine einzelne Zeile gemäß der Bedingung ausgewählt.

Beispiel 3: Suche nach Trigramm

PostgreSQL verfügt über eine hilfreiche Erweiterung, mit der die Erweiterung PG_TRGM aktiviert werden kann. Diese Erweiterung wird verwendet, um einige Funktionen der Fuzzy -String -Suche zu bringen. Die Trigramme werden gebildet, wenn eine Saite in eine Gruppe von drei Buchstaben nacheinander unterteilt wird. Zuerst müssen wir die Erweiterung in PostgreSQL installieren. Denn ohne die Erweiterung zu aktivieren, können wir keine Fuzzy -Suche auf unterschiedliche Weise anwenden:

>> Erweiterung erstellen pg_trgm;

Der Datenbank wird eine Erweiterung hinzugefügt. Jetzt werden wir einige Befehle anwenden, die gemäß den installierten Erweiterungen verwendet werden. In dieser Art von Suche verwenden wir das Schlüsselwort 'Ähnlichkeit', um nach der nächstgelegenen Übereinstimmung zu suchen, indem wir die Wahrscheinlichkeit des Bereichs bereitstellen, der zeigt, wie ähnlich die Zeichenfolgen auf der Skala zwischen 0 und 1 sind. Im folgenden Beispiel werden wir aus der Tabelle suchen, indem wir eine Where -Klausel mit Ähnlichkeit wie 'Johr' anwenden, sodass der 4. Brief im Wort geändert wird. Die Suche wird gemäß den nebligen Buchstaben entsprechen:

>> Wählen Sie * vom Maler, wobei Ähnlichkeit (Name, 'johr')> 0.4;

Das Ergebnis enthält die Zeile mit dem Spaltennamen ähnlich wie John, der John in der Tabelle ist.

Jetzt werden wir das Ähnlichkeitskonzept auf die Nationalitätsspalte in den Zeilen anwenden, die 'und' in der in den Postgresql -Daten vorhandenen Zeichenfolge enthalten. Der Ergebnis wird auf die 2 Zeilen beschränkt:

>> Select * aus der Malerordnung nach Ähnlichkeit (Nationalität, 'an') Grenze 2;

Der Ergebnis enthält nur zwei Zeilen, da wir die Grenze angewendet haben. Also werden diese Reihen angezeigt, die die Nationalität mit 'und' in ihnen enthalten.

Beispiel 4: Durchsuchen phonetischer Algorithmen

Eine andere Möglichkeit der Suche ist die Verwendung von phonetischen Algorithmen. Diese Algorithmen verwenden die Regeln, die zur Darstellung einer Zeichenfolge mithilfe eines Shortcode verwendet werden. Zu diesem Zweck verwendet PostgreSQL eine Erweiterung, damit wir die Arbeit der Suche aktivieren können. Diese Erweiterung ist ein Fuzzy -String -Matcher:

>> Erweiterung fuzzyStrMatch erstellen;

Nach der Installation der Erweiterung werden wir eine beliebige Funktion der Erweiterung verwenden. Zum Beispiel werden wir eine Funktion namens Metaphone verwenden.

Metaphon: Dieser Algorithmus wird verwendet, um den Code unterschiedlicher Längen zurückzugeben. Dies ist wie die einfache Funktion, die wir in PostgreSQL verwenden. Ebenso können wir Argumente an diese Funktion übergeben. Zum Beispiel wird die Länge angegeben, die den Wert auf diese Länge zurückgibt.

Im Beispiel werden wir ID, Name und eine neue Spalte mit dem Namen Metaphon auswählen, das den Namen des Malers verkürzt, um eine Abkürzung zu bilden. Die WHERE -Klausel enthält eine Bedingung, um nach der Nationalität zu suchen, die American entspricht:

>> ID, Name, Metaphon (Name, 10) aus dem Maler, wobei Nationality = 'American' Limit 2;

Sie können sehen, dass bei der Ausführung die Metaphon -Spalte die verkürzten Formen der Namen des Malers enthält.

Abschluss

Dieser Artikel wirft die teilweise Suche der Daten auf. Wenn der Benutzer die vollständigen Namen oder den teilweisen Namen nicht bewusst ist, kann er die Informationen über den Datensatz mit dieser Art von Suche problemlos erhalten. Wir haben elementare Beispiele sowohl für die Algorithmen als auch in Bezug auf die Erweiterungen in PostgreSQL verwendet. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Informationen finden Sie in anderen Linux -Hinweisartikeln.