Questa pagina descrive come utilizzare la ricerca a testo intero in Spanner Graph.
Spanner Graph combina la ricerca di grafi e a testo intero in un unico sistema. Questa combinazione ti consente di ricavare informazioni strategiche dai dati non strutturati in combinazione con le relazioni nel grafico.
Prima di iniziare
Per eseguire gli esempi in questa pagina, devi eseguire le procedure di configurazione e query di Spanner Graph utilizzando la console Google Cloud . Queste procedure svolgono le seguenti operazioni:
- Crea un'istanza.
- Crea un database.
- Crea uno schema per il tuo database Spanner Graph.
- Inserisci i dati del grafico.
Crea token e indici di ricerca
Il primo passaggio per utilizzare la ricerca a testo intero è tokenizzare i contenuti in base ai quali vuoi eseguire la ricerca e creare un indice di ricerca. La ricerca a testo intero esegue query sull'indice di ricerca.
L'esempio seguente aggiunge la colonna nick_name_token
e utilizza la funzione
TOKENIZE_FULLTEXT
per tokenizzare il testo nella colonna Account.nick_name
. Successivamente, viene creato l'indice di ricerca nella colonna nick_name_token
.
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);
L'esempio seguente utilizza la funzione
TOKENIZE_FULLTEXT
per tokenizzare il testo in Account.nick_name
e crea un indice di ricerca
nella colonna nick_name_token
contenente i token.
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);
Poiché sono state aggiunte alcune nuove colonne a Account
e AccountTransferAccount
e accedo a queste come nuove proprietà del grafo nelle funzioni di ricerca, devi aggiornare la definizione del grafo delle proprietà utilizzando la seguente dichiarazione (maggiori dettagli sono disponibili in Aggiornare le definizioni di nodi o archi esistenti).
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
);
Ora puoi utilizzare la ricerca full-text sui dati del grafico.
Proprietà del nodo del grafico di ricerca
Questo esempio mostra come cercare i nodi nel grafico ed esplorare le relative relazioni.
Aggiorna
Account.nick_name
con alcuni messaggi.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;
Utilizza la funzione
SEARCH
per trovare i nodiAccount
nel grafo che contengono "giorno di pioggia" OPPURE "vacanza" nelnick_name
. Utilizza la traversata del grafo per trovare l'importo trasferito in questi account. Assegna un punteggio alle corrispondenze in base alla pertinenza per la ricerca. Ordina e restituisci i risultati in ordine decrescente di pertinenza. Tieni presente che puoi cercare la disgiunzione di token nella stessa chiamata della funzione di ricerca.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
Risultato:
nick_name amount_added Rainy day fund for the things I still want to do 300 Fund for vacation at the north pole 500
Proprietà dell'elemento del grafico di ricerca
Questo esempio mostra come cercare archi specifici nel grafico
Aggiorna
AccountTransferAccount.notes
con un messaggio.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;
Utilizza la ricerca full-text per trovare gli spigoli Trasferimenti che contengono "viaggio". Utilizza la traversale del grafico per trovare i nodi di origine e di destinazione di questi trasferimenti.
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
Risultato:
src_id dst_id notes 20 7 <trip's very fun!> 16 20 for trip fund
La funzione di ricerca ha richiamato correttamente il primo risultato nonostante i tag HTML nel testo.
Passaggi successivi
- Scopri di più sulle query di Spanner Graph.
- Scopri di più sulla ricerca a testo intero.
- Scopri di più sulle query di ricerca full-text.