Auf dieser Seite wird beschrieben, wie Sie die Volltextsuche in Spanner Graph verwenden.
Spanner Graph kombiniert Graph- und Volltextsuche in einem System. So lassen sich Erkenntnisse aus unstrukturierten Daten in Verbindung mit Beziehungen im Graphen gewinnen.
Hinweise
Wenn Sie die Beispiele auf dieser Seite ausführen möchten, müssen Sie Spanner-Graphen mit der Google Cloud Console einrichten und abfragen. Mit diesen Verfahren wird Folgendes erreicht:
- Erstellen Sie eine Instanz.
- Erstellen Sie eine Datenbank.
- Erstellen Sie ein Schema für Ihre Spanner-Graphdatenbank.
- Diagrammdaten einfügen
Tokens und Suchindexe erstellen
Der erste Schritt zur Verwendung der Volltextsuche besteht darin, die Inhalte zu tokenisieren, in denen gesucht werden soll, und einen Suchindex zu erstellen. Bei der Volltextsuche werden Abfragen an den Suchindex gesendet.
Im folgenden Beispiel wird die Spalte nick_name_token
hinzugefügt und der Text in der Spalte Account.nick_name
mit der Funktion TOKENIZE_FULLTEXT tokenisiert. Als Nächstes wird der Suchindex für die Spalte nick_name_token
erstellt.
ALTER TABLE Account
ADD COLUMN nick_name_token TOKENLIST
AS (TOKENIZE_FULLTEXT(nick_name)) STORED HIDDEN;
CREATE SEARCH INDEX AccountTextSearchIndex
ON Account(nick_name_token) STORING (nick_name);
Im folgenden Beispiel wird die Funktion TOKENIZE_FULLTEXT verwendet, um den Text in Account.nick_name
zu tokenisieren. Anschließend wird ein Suchindex für die Spalte nick_name_token
erstellt, die die Tokens enthält.
ALTER TABLE AccountTransferAccount
ADD COLUMN notes STRING(MAX);
ALTER TABLE AccountTransferAccount
ADD COLUMN notes_token TOKENLIST AS (TOKENIZE_FULLTEXT(notes)) STORED HIDDEN;
CREATE SEARCH INDEX TransferTextSearchIndex
ON AccountTransferAccount(notes_token) STORING (notes);
Da Account
und AccountTransferAccount
einige neue Spalten hinzugefügt wurden und Sie in Suchfunktionen auf sie als neue Graph-Attribute zugreifen, müssen Sie die Property-Graph-Definition mit der folgenden Anweisung aktualisieren. Weitere Informationen finden Sie unter Vorhandene Knoten- oder Kantendefinitionen aktualisieren.
CREATE OR REPLACE PROPERTY GRAPH FinGraph
NODE TABLES (Account, Person)
EDGE TABLES (
PersonOwnAccount
SOURCE KEY (id) REFERENCES Person (id)
DESTINATION KEY (account_id) REFERENCES Account (id)
LABEL Owns,
AccountTransferAccount
SOURCE KEY (id) REFERENCES Account (id)
DESTINATION KEY (to_id) REFERENCES Account (id)
LABEL Transfers
);
Sie können jetzt die Volltextsuche für Ihre Diagrammdaten verwenden.
Eigenschaft „Suchgraph-Knoten“
In diesem Beispiel wird gezeigt, wie Sie nach Knoten im Graphen suchen und ihre Beziehungen untersuchen.
Aktualisieren Sie
Account.nick_name
mit einigen Nachrichten.UPDATE Account SET nick_name = "Fund for vacation at the north pole" WHERE id = 7; UPDATE Account SET nick_name = "Fund -- thrill rides!" WHERE id = 16; UPDATE Account SET nick_name = "Rainy day fund for the things I still want to do" WHERE id = 20;
Verwenden Sie die Funktion
SEARCH
, umAccount
-Knoten im Diagramm zu finden, derennick_name
entweder „Regentag“ ODER „Urlaub“ enthält. Verwenden Sie die Graphendurchquerung, um den Geldbetrag zu ermitteln, der in diese Konten überwiesen wurde. Bewerten Sie die Übereinstimmungen nach Suchrelevanz. Die Ergebnisse werden in absteigender Relevanz sortiert und zurückgegeben. Sie können die Disjunktion von Tokens im selben Aufruf der Suchfunktion suchen.GRAPH FinGraph MATCH (n:Account)<-[e:Transfers]-(:Account) WHERE SEARCH(n.nick_name_token, '"rainy day" | vacation') RETURN n.nick_name, e.amount AS amount_added ORDER BY SCORE(n.nick_name_token, '"rainy day" | vacation') DESC
Ergebnis:
nick_name amount_added Rainy day fund for the things I still want to do 300 Fund for vacation at the north pole 500
Suchgraph-Kanteneigenschaft
In diesem Beispiel wird gezeigt, wie Sie nach bestimmten Kanten im Graphen suchen.
Aktualisieren Sie
AccountTransferAccount.notes
per SMS.UPDATE AccountTransferAccount SET notes = 'for trip fund' WHERE id = 16 AND to_id = 20; UPDATE AccountTransferAccount SET notes = '<trip's very fun!>' WHERE id = 20 AND to_id = 7; UPDATE AccountTransferAccount SET notes = 'book fee' WHERE id = 20 AND to_id = 16;
Verwenden Sie die Volltextsuche, um Kanten für Umstiege zu finden, die „Fahrt“ enthalten. Mithilfe der Graphendurchquerung können Sie die Quell- und Zielknoten dieser Übertragungen ermitteln.
GRAPH FinGraph MATCH (a:Account)-[e:Transfers WHERE SEARCH(e.notes_token, 'trip')]->(b:Account) RETURN a.id AS src_id, b.id AS dst_id, e.notes
Ergebnis:
src_id dst_id notes 20 7 <trip's very fun!> 16 20 for trip fund
Die Suchfunktion hat das erste Ergebnis trotz der HTML-Tags im Text korrekt abgerufen.
Nächste Schritte
- Weitere Informationen zu Spanner-Graphabfragen
- Weitere Informationen zur Volltextsuche
- Weitere Informationen zu Abfragen für die Volltextsuche