Standardmäßig sind die Suche in der PostgreSQL -Datenbank genau. Was das bedeutet, ist, wenn Benutzer nach 'x y z' suchen, sucht die PostgreSQL -Datenbank in genauen Reihenfolge in den Feldern einer bestimmten Tabelle nach 'x y z'. Wenn es eine leichte Nichtübereinstimmung gibt, beispielsweise sagen wir, Sie haben 'x y_z', wird die Datenbank kein Ergebnis angezeigt.
Schauen wir uns ein reales Szenario an, dann werden Sie sich klarstellen, was die Volltextensuche ist und was die Notwendigkeit dafür ist.
Angenommen, Sie haben einen IT -Speicher und der Benutzer suchte nach "Desktop und Laptop". Kein Problem dort. Aber haben Sie tatsächlich ein Produkt, das ein Desktop und ein Laptop ist? Haben Sie überhaupt ein Produkt, dessen Titel "XXX Desktop und Laptop" genau so lautet, wie der Benutzer gesucht hat? Höchstwahrscheinlich nein! Die Suche würde keine relevanten Ergebnisse anzeigen. Der Benutzer wollte wahrscheinlich alle Computer in Ihrem Geschäft auflisten, die er als Desktop und Laptop verwenden kann, höchstwahrscheinlich als Cabrio -Tablet. Da die Suche dem Benutzer ein Ergebnis nicht angezeigt hat, ist der Benutzer möglicherweise der Meinung. Sie haben jedoch viele Cabrio -Tablets, die als Desktop und Laptop in der Datenbank Ihres Store verwendet werden können. Wenn die Benutzer es nicht finden können, erhalten Sie keine Verkäufe. Sie möchten auf Ihrer Website, um alle konvertierbaren Computer aufzulisten, die Sie auf Lager haben, wenn Benutzer eine solche Suchabfrage durchführen. Hier kommt die Volltext -Suche ins Spiel. Wenn eine gewöhnliche Suche fehlschlägt, rettet die Volltext -Suche rettungsvoll.
In diesem Artikel werde ich Ihnen zeigen. Lass uns anfangen.
Einrichten von PostgreSQL für die Volltext -Suche
Bevor Sie zusammen mit mir die Volltextsuche auf PostgreSQL üben können, müssen Sie Postgresql mit einigen Dummy -Daten einrichten. In diesem Abschnitt werde ich Ihnen zeigen, wie Sie diese auf Postgresql hinzufügen können.
Erstellen Sie zunächst eine neue Datenbank mit dem folgenden Befehl:
$ createdb it_storeHinweis: Hier it_store ist der Datenbankname.
Melden Sie sich nun bei der PostgreSQL Shell der an it_store Datenbank, die Sie mit dem folgenden Befehl erstellt haben:
$ psql it_storeSie sollten bei den Postgresqls angemeldet sein it_store Datenbank, wie Sie im Screenshot unten sehen können.
Ich werde hier nicht über Bord gehen. Ich werde ein einfaches schaffen Produkte Tabelle für unsere IT Store -Datenbank. Die Grundlagenfelder, die ich brauche, sind a Produkt ID, Produktname, Produktbeschreibung.
Der SQL -Code für die Produkttabelle ist unten angegeben:
Kopieren Sie nun den SQL Produkte Tabelle in die PostgreSQL -Shell, wie im Screenshot unten gezeigt.
Sobald du fertig bist, Produkte Die Tabelle sollte erstellt werden.
Jetzt werde ich einige Produkte in die einfügen Produkte Tisch. Die SQL -Befehle sind unten angegeben.
Die Produkte werden in die eingeführt Produkte Tisch.
Sie können den folgenden SQL -Befehl ausführen, um dies zu überprüfen:
$ Select * aus Produkten;Wie Sie sehen können, die Produkte sind in der Produkttisch.
Volltext -Suche bei PostgreSQL
Im früheren Abschnitt habe ich Ihnen gezeigt, wie Sie Ihre PostgreSQL -Datenbank Dummy -Daten hinzufügen können. In diesem Abschnitt werde ich Ihnen zeigen.
In PostgreSQL verwenden Sie zwei Funktionen, um die Volltextsuche durchzuführen. Sie sind to_tsVector () Und to_tsquery (). Mal sehen, wie sie funktionieren und sie zuerst benutzen.
Eine kurze Tour durch to_tsVector () Und to_tsquery () Funktionen
to_tsVector () Die Funktion bricht die Eingangszeichenfolge aus und erstellt Tokens daraus heraus, wodurch dann die Volltextsuche mit der Durchführung des to_tsquery () Funktion.
Nun zu verstehen was to_tsVector () Die Funktion für eine Eingabezeichenfolge, öffnen Sie die PostgreSQL -Shell und führen Sie den folgenden Befehl aus:
# Wählen Sie to_tsVector ('Ich liebe Linux. Linux ist ein großartiges Betriebssystem.');Wie Sie die Ausgabe der Ausgabe sehen können to_tsVector () Funktion im markierten Abschnitt des Screenshot unten, die to_tsVector () Die Funktion hat die Wörter aufgelöst und einige Zahlen darin zugewiesen.
Sie können verwenden to_tsquery () Funktion wie folgt:
# Feldnamen aus TableName auswählenBedingungen von to_tsquery () Funktion
Der to_tsquery () Akzeptiert die Bedingungen, die es verwendet, um mit der Ausgabe von zu vergleichen to_tsVector () Funktion.
Wenn Sie beispielsweise nach "Laptop und Desktop" suchen, sollten Sie einsetzen "Laptop & Desktop" Zu to_tsquery () Funktion.
Für 'Laptop oder Desktop' sollte der Zustand sein 'Laptop | Desktop '.
Jetzt werde ich in unsere IT Store -Datenbank gehen, um Ihnen einige Beispiele in der realen Welt zu zeigen.
Suchen wir nach einem Cabrio -Gerät, das als Desktop und Laptop verwendet werden kann, als ich früher sprach.
Führen Sie dazu den folgenden SQL -Befehl aus:
Wie Sie sehen können, wurde der richtige Computer gefunden.
Sie können auch die Begriffe umdrehen. Beispielsweise können Sie nach "Laptop & Desktop" suchen.
Das richtige Ergebnis wird noch angezeigt.
Nehmen wir an, der Benutzer möchte alle Desktop- oder Laptop -Computer in Ihrem IT -Speicher auflisten. Die Abfrage lautet "Desktop oder Laptop" und der Zustand von to_tsquery () Funktion sollte sein 'Desktop | Laptop' oder 'Laptop | Desktop '.
Der SQL -Befehl lautet:
Wie Sie sehen können, sind alle Computer des IT -Speichers aufgeführt.
Schauen wir uns ein anderes Beispiel an. Der Benutzer sucht nach allen Laptops in Ihrem Geschäft, aber nicht nach den Cabrio. Die Benutzerabfrage kann sein "Keine konvertierbaren Laptops". Der Zustand von to_tsquery () Funktion kann sein ''!Cabrio & Laptops '
Der SQL -Befehl lautet:
Wie Sie sehen können, wird der richtige Laptop gefunden.
Hast du eine Sache bemerkt?? Ich legte Laptops im to_tsquery() Funktion, aber es gibt nicht Laptops Schlüsselwort in der Produktbeschreibung. Wie hat Postgresql es gefunden?? Nun, das ist die Magie der Volltextensuche. Die Schlüsselwörter müssen nicht genau sein. Postgresql kann sogar mit Pluralwörtern, Zeitformen und vielen anderen umgehen.
Standardmäßig funktioniert die Volltextsuche nur auf englischer Sprache. PostgreSQL bietet jedoch auch einige andere Sprachen unterstützt. Weitere Informationen dazu finden Sie in der PostgreSQL -Dokumentation.
So führen Sie die Volltextsuche auf PostgreSQL durch. Danke, dass du diesen Artikel gelesen hast.