Postgresql Volltext-Suchbeispiele

Postgresql Volltext-Suchbeispiele
Jede Datenbank sollte eine effektive und vielseitige Suchfunktion haben. Immer wenn es sich auf Datenbanken bezieht, ist Postgresql ein Meister aller Handwerks. Es kombiniert alle Dinge, die Sie mit SQL mit einer Reihe von Nicht-SQL-Datenbankfunktionen geliebt haben. Jedes dieser Nicht-SQL-Funktionen, wie die JSONB-Informationsart, ist fantastisch und Sie müssten nicht einmal eine andere Datenbank ausprobieren. Die Volltext-Suche gehört zu den neuesten Nicht-SQL-Funktionen, die in PostgreSQL aufgenommen wurden. Ist postgresqls vollständiger Textsuche vollständig funktional oder möchten Sie einen bestimmten Suchindex? Wenn Sie irgendwie eine vollständige Textsuche entwickeln können, die das Hinzufügen eines weiteren Code -Code -Code -Abdecks entzogen ist, wäre dies eine fantastische Idee. Sie haben die Mustersuche in der MySQL -Datenbank bereits kennengelernt. Schauen wir sie uns zuerst an. Öffnen Sie die PostgreSQL-Befehlszeilenschale in Ihrem Computersystem. Schreiben Sie den Servertitel, den Datenbanknamen, die Portnummer, den Benutzernamen und das Kennwort für den bestimmten Benutzer als Standardoptionen. Wenn Sie mit standardmäßigen Überlegungen auftreten müssen, lassen Sie alle Auswahlmöglichkeiten leer und drücken Sie jede Option ein. Geben Sie die Option ein. Im Moment ist Ihre Befehlszeilenschale für die Arbeit ausgerüstet, um daran zu arbeiten.

Um das Konzept der Volltext-Suche zu verstehen, müssen Sie sich über das Keyword erinnern Mustersuche Wissen erinnern. Nehmen wir also eine Tabelle "Person" in der Datenbank "Test" mit den folgenden Datensätzen an.

>> aus der Person auswählen;

Nehmen wir an, Sie möchten die Datensätze dieser Tabelle abrufen, in der der Spaltenname 'ein Zeichen' I 'in einem seiner Werte hat. Probieren Sie die folgende Abfrage aus, während Sie die gleiche Klausel in der Befehlsschale verwenden. Aus der folgenden Ausgabe sehen Sie, dass wir nur 5 Datensätze für dieses bestimmte Zeichen "I" in der Spalte "Name" haben.

>> Wählen Sie * aus der Person, wobei der Name '%i%' wie der Name wie "%";

Verwendung von Fernsehsektor:

Manchmal nützt es keine Nutzung, das Like -Keyword zu verwenden, um eine schnelle Mustersuche durchzuführen, obwohl das Wort da ist. Vielleicht würden Sie in Betracht ziehen, Standardausdrücke zu verwenden, und obwohl dies eine praktikable Alternative ist, sind regelmäßige Ausdrücke sowohl stark als auch träge. Ein prozeduraler Vektor für ganze Wörter in einem Text, eine einheimische Beschreibung dieser Wörter, ist eine viel effizientere Möglichkeit, dieses Problem anzugehen. Das Konzept der vollständigen Textsuche und des Datentyps TsVector wurde erstellt, um darauf zu reagieren. PostgreSQL gibt zwei Methoden, die genau das tun, was wir wollen:

  • To_tvsector: Wird verwendet, um eine Liste von Token zu erstellen (TS -Mittel für „Textsuche“).
  • To_tsquery: Wird verwendet, um den Vektor nach Inzidenzen bestimmter Begriffe oder Phrasen zu durchsuchen.

Beispiel 01:

Beginnen wir mit einer einfachen Illustration der Erstellung eines Vektors. Angenommen, Sie möchten einen Vektor für die Schnur machen: „Einige Leute haben lockiges braunes Haar durch ordnungsgemäßes Bürsten.”. Sie müssen also zusammen mit diesem Satz in den Klammern einer Abfrage eine to_tvsector () -Funktion schreiben, wie unten angegeben. Aus der folgenden Ausgabe können Sie einen Vektor von Referenzen (Dateipositionen) für jedes Token ergeben und auch, wo Begriff.

>> Wählen Sie to_tsVector ('Einige Leute haben lockige braune Haare durch ordnungsgemäßes Bürsten');

Beispiel 02:

Angenommen, Sie haben zwei Dokumente mit einigen Daten in beiden. Um diese Daten zu speichern, werden wir jetzt ein echtes Beispiel für die Generierung von Token verwenden. Angenommen, Sie haben eine Tabelle "Daten" in Ihrer Datenbank "Test" mit einigen Spalten darin erstellt, indem Sie die folgende Tabellenabfrage erstellen. Vergessen Sie nicht, eine Spalte vom TV -Seektor -Typ mit dem Namen "Token" zu erstellen. Aus der folgenden Ausgabe können Sie sich die erstellte Tabelle ansehen.

>> Tabellendaten erstellen (iD serielle Primärschlüssel, Infotext, Token TsVector);

Jetzt dreht es uns, die Gesamtdaten beider Dokumente in dieser Tabelle hinzuzufügen. Probieren Sie also den Befehl unten einfügen in Ihrer Befehlszeilenschale, um dies zu tun. Schließlich wurden die Datensätze aus beiden Dokumenten erfolgreich in die Tabelle "Daten" hinzugefügt.

>> In Data (Info) -Werte einfügen ('Zwei Fehler können niemals ein richtig machen.'), (' Er ist derjenige, der Fußball spielen kann.'), (' Kann ich dabei eine Rolle spielen?'), (' Der Schmerz in einem einer kann nicht verstanden werden ') (' Pfirsich in dein Leben bringen);

Jetzt müssen Sie die Token -Spalte beider Dokumente mit ihrem spezifischen Vektor besiedeln. Letztendlich füllt eine einfache Update -Abfrage die Spalte der Tokens durch ihren entsprechenden Vektor für jede Datei. Sie müssen also die unten angegebene Abfrage in der Befehlsschale ausführen. Die Ausgabe zeigt, dass das Update endlich erstellt wurde.

>> Daten f1 Aktualisieren Sie token = to_tsVector (F1.Info) aus Daten F2;

Jetzt, da wir alles an Ort und Stelle haben. Zu to_tsQuery mit und dem Bediener, wie bereits erwähnt, macht keinen Unterschied zwischen den Positionen der Dateien in den Dateien, wie aus der unten angegebenen Ausgabe gezeigt.

>> ID auswählen, Informationen aus Daten, die token @@ to_tsquery ('Can & One');

Beispiel 04:

Um Wörter zu finden, die sich gegenseitig „neben“ befinden, werden wir die gleiche Abfrage mit dem '' 'Operator ausprobieren. Die Änderung wird in der folgenden Ausgabe angezeigt.

>> ID auswählen, Informationen aus Daten, die token @@ to_tsquery ('car One');

Hier ist ein Beispiel für kein unmittelbares Wort neben einem anderen.

>> ID auswählen, Informationen aus Daten, die token @@ to_tsquery ('ein Schmerz');

Beispiel 05:

Wir werden die Wörter finden, die sich nicht unmittelbar nebeneinander befinden, indem wir eine Zahl im Entfernungsoperator zur Referenzentfernung verwenden. Die Nähe zwischen 'bringen' und 'Leben ist 4 Wörter außer dem angezeigten Bild abgesehen.

>> aus Daten auswählen, wo token @@ to_tsquery ('Leben bring');

Um die Nähe zwischen den Wörtern für fast 5 Wörter zu überprüfen, ist unten beigefügt.

>> aus Daten auswählen, wo token @@ to_tsquery ('falsch rechts');

Abschluss:

Schließlich haben Sie alle einfachen und komplizierten Beispiele für die Volltext-Suche mit den Operatoren und Funktionen TO_TVsector und TO_TSQuery durchgeführt.