Esta página descreve como usar a pesquisa de texto completo no Spanner Graph.
O Spanner Graph combina gráficos e pesquisa de texto completo em um único sistema. Essa combinação permite extrair insights de dados não estruturados em conjunto com as relações no gráfico.
Antes de começar
Para executar os exemplos desta página, você precisa executar a configuração e consultar o Spanner Graph usando os procedimentos do console do Google Cloud . Esses procedimentos fazem o seguinte:
- Crie uma instância.
- Crie um banco de dados.
- Crie um esquema para o banco de dados do Spanner Graph.
- Inserir dados do gráfico.
Criar tokens e índices de pesquisa
A primeira etapa para usar a pesquisa de texto completo é tokenizar o conteúdo que você quer pesquisar e criar um índice de pesquisa. A pesquisa de texto completo executa consultas no índice de pesquisa.
O exemplo a seguir 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 a seguir usa a função TOKENIZE_FULLTEXT para tokenizar o texto em Account.nick_name
e criar 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);
Como algumas colunas foram adicionadas a Account
e AccountTransferAccount
, e
você as acessa como novas propriedades de gráfico nas funções de pesquisa, é necessário
atualizar a definição do gráfico de propriedade usando a seguinte instrução (explicada em
atualizar definições de nó ou aresta).
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 você pode usar a pesquisa de texto completo nos dados do gráfico.
Pesquisar propriedade do nó do gráfico
Este exemplo mostra como pesquisar nós no gráfico e analisar as relacionamentos deles.
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 chuvoso" OU "férias" nonick_name
. Use a travessia de gráfico para encontrar a quantidade de dinheiro que foi transferido para essas contas. Pontue as correspondências pela relevância da pesquisa. Ordene e retorne os resultados em ordem de relevância decrescente. É possível procurar a disjunção de tokens na mesma chamada de 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 as arestas de transferência que contêm "trip". Use a travessia de gráfico para encontrar os nós de origem e 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 recuperou corretamente o primeiro resultado, apesar das tags HTML no texto.
A seguir
- Saiba mais sobre as consultas do Spanner Graph.
- Saiba mais sobre a pesquisa de texto completo.
- Saiba mais sobre as consultas de pesquisa de texto completo.