En esta página se describe cómo usar la búsqueda de texto completo en Spanner Graph.
Spanner Graph combina la búsqueda de gráficos y de texto completo en un solo sistema. Esta combinación te permite extraer información valiosa de datos no estructurados junto con las relaciones del gráfico.
Antes de empezar
Para ejecutar los ejemplos de esta página, debes seguir los procedimientos de configuración y consulta de gráficos de Spanner con la consola. Google Cloud Estos procedimientos hacen lo siguiente:
- Crea una instancia.
- Crea una base de datos.
- Crea un esquema para tu base de datos de Spanner Graph.
- Insertar datos de un gráfico.
Crear tokens e índices de búsqueda
El primer paso para usar la búsqueda de texto completo es tokenizar el contenido en el que quieres buscar y crear un índice de búsqueda. La búsqueda en todo el texto ejecuta consultas en el índice de búsqueda.
En el siguiente ejemplo se añade la columna nick_name_token
y se usa la función TOKENIZE_FULLTEXT para tokenizar el texto de la columna Account.nick_name
. A continuación, se crea el índice de búsqueda en la columna 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);
En el siguiente ejemplo, se usa la función TOKENIZE_FULLTEXT para tokenizar el texto de Account.nick_name
y se crea un índice de búsqueda en la columna nick_name_token
, que contiene los 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 se han añadido algunas columnas nuevas a Account
y AccountTransferAccount
, y se accede a ellas como nuevas propiedades de gráfico en las funciones de búsqueda, debe actualizar la definición del gráfico de propiedades con la siguiente instrucción (se explica más detalladamente en Actualizar definiciones de nodos o aristas).
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
);
Ahora puedes usar la búsqueda de texto completo en tus datos de gráficos.
Propiedad de nodo del gráfico de búsqueda
En este ejemplo se muestra cómo buscar nodos en el gráfico y explorar sus relaciones.
Actualiza
Account.nick_name
con algunos mensajes 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;
Usa la función
SEARCH
para buscar nodosAccount
en el gráfico que tengan "rainy day" (día de lluvia) o "vacation" (vacaciones) en sunick_name
. Usa el recorrido de grafos para encontrar la cantidad de dinero que se transfirió a esas cuentas. Puntuación de las coincidencias por relevancia de búsqueda. Ordena y devuelve los resultados en orden de relevancia descendente. Ten en cuenta que puedes buscar la disyunción de tokens en la misma llamada de función de búsqueda.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
Propiedad de arista de gráfico de búsqueda
En este ejemplo se muestra cómo buscar aristas específicas en el gráfico.
Actualiza
AccountTransferAccount.notes
con un mensaje 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;
Usa la búsqueda de texto completo para encontrar aristas de Transfers que contengan "trip". Usa el recorrido de gráficos para encontrar los nodos de origen y de destino de esas transferencias.
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
La función de búsqueda ha devuelto correctamente el primer resultado a pesar de las etiquetas HTML del texto.
Siguientes pasos
- Consulta información sobre las consultas de Spanner Graph.
- Consulta información sobre la búsqueda de texto completo.
- Consulta información sobre las consultas de búsqueda de texto completo.