Esta página descreve como usar a pesquisa de texto completo no Spanner Graph.
O Spanner Graph combina a pesquisa de gráficos e de texto completo num único sistema. Esta combinação permite-lhe obter estatísticas a partir de dados não estruturados juntamente com relações no gráfico.
Antes de começar
Para executar os exemplos nesta página, tem de realizar os procedimentos de configuração e consulta do Spanner Graph através da Google Cloud consola. Estes procedimentos fazem o seguinte:
- Crie uma instância.
- Crie uma base de dados.
- Crie um esquema para a sua base de dados do Spanner Graph.
- Inserir dados do gráfico.
Crie tokens e pesquise índices
O primeiro passo para usar a pesquisa de texto completo é tokenizar o conteúdo que quer pesquisar e criar um índice de pesquisa. A pesquisa de texto completo executa consultas no índice de pesquisa.
O exemplo seguinte adiciona a coluna nick_name_token
e usa a função
TOKENIZE_FULLTEXT
para tokenizar o texto na coluna Account.nick_name
. Em seguida, o índice de pesquisa é criado na coluna 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);
O exemplo seguinte usa a função
TOKENIZE_FULLTEXT
para tokenizar o texto em Account.nick_name
e cria um índice de pesquisa
na coluna nick_name_token
que contém os tokens.
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);
Uma vez que foram adicionadas algumas novas colunas a Account
e AccountTransferAccount
e
acede a elas como novas propriedades do gráfico nas funções de pesquisa, tem de
atualizar a definição do gráfico de propriedades através da seguinte declaração (mais
informações em
atualize as definições de nós ou arestas existentes).
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
);
Agora, pode usar a pesquisa de texto completo nos dados do gráfico.
Propriedade do nó do gráfico de pesquisa
Este exemplo mostra como pesquisar nós no gráfico e explorar as respetivas relações.
Atualize
Account.nick_name
com algumas mensagens de texto.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;
Use a função
SEARCH
para encontrar nósAccount
no gráfico que tenham "dia de chuva" OU "férias" no respetivonick_name
. Use o percurso do gráfico para encontrar a quantidade de dinheiro que foi transferida para essas contas. Atribua uma pontuação às correspondências com base na relevância da pesquisa. Ordenar e devolver os resultados por ordem de relevância descendente. Tenha em atenção que pode procurar a disjunção de tokens na mesma chamada da função de pesquisa.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
Resultado:
nick_name amount_added Rainy day fund for the things I still want to do 300 Fund for vacation at the north pole 500
Propriedade de aresta do gráfico de pesquisa
Este exemplo mostra como pesquisar arestas específicas no gráfico
Atualize
AccountTransferAccount.notes
com uma mensagem de texto.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;
Use a pesquisa de texto completo para encontrar arestas de transferências que contenham "viagem". Use a travessia de grafos para encontrar os nós de origem e de destino dessas transferências.
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
Resultado:
src_id dst_id notes 20 7 <trip's very fun!> 16 20 for trip fund
A função de pesquisa recordou corretamente o primeiro resultado, apesar das etiquetas HTML no texto.
O que se segue?
- Saiba mais sobre as consultas de grafos do Spanner.
- Saiba mais sobre a pesquisa de texto integral.
- Saiba mais sobre as consultas de pesquisa de texto completo.