Halaman ini menjelaskan cara menggunakan penelusuran teks lengkap di Spanner Graph.
Spanner Graph menggabungkan penelusuran grafik dan teks lengkap dalam satu sistem. Kombinasi ini memungkinkan Anda memperoleh insight dari data tidak terstruktur bersama dengan hubungan dalam grafik.
Sebelum memulai
Untuk menjalankan contoh di halaman ini, Anda perlu melakukan prosedur menyiapkan dan membuat kueri Spanner Graph menggunakan konsol Google Cloud. Prosedur ini melakukan hal berikut:
Membuat token dan indeks penelusuran
Langkah pertama untuk menggunakan penelusuran teks lengkap adalah membuat token konten yang ingin Anda telusuri dan membuat indeks penelusuran. Penelusuran teks lengkap menjalankan kueri terhadap indeks penelusuran.
Contoh berikut menambahkan kolom nick_name_token
dan menggunakan fungsi TOKENIZE_FULLTEXT untuk membuat token teks di kolom Account.nick_name
. Selanjutnya, indeks penelusuran dibuat di kolom 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);
Contoh berikut menggunakan fungsi TOKENIZE_FULLTEXT untuk membuat token teks di Account.nick_name
dan membuat indeks penelusuran di kolom nick_name_token
yang berisi 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);
Karena beberapa kolom baru telah ditambahkan ke Account
dan AccountTransferAccount
dan
Anda mengaksesnya sebagai properti grafik baru dalam fungsi penelusuran, Anda perlu
memperbarui definisi grafik properti menggunakan pernyataan berikut (lebih
dijelaskan dalam
memperbarui definisi node atau tepi yang ada).
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
);
Anda kini dapat menggunakan penelusuran teks lengkap pada data grafik.
Properti node grafik penelusuran
Contoh ini menunjukkan cara menelusuri node dalam grafik dan mempelajari hubungannya.
Perbarui
Account.nick_name
dengan beberapa pesan teks.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;
Gunakan fungsi
SEARCH
untuk menemukan nodeAccount
dalam grafik yang memiliki "rainy day" ATAU "vacation" dinick_name
-nya. Gunakan traversal grafik untuk menemukan jumlah uang yang ditransfer ke Akun tersebut. Beri skor kecocokan berdasarkan relevansi penelusuran. Urutkan dan tampilkan hasil dalam urutan relevansi menurun. Perhatikan bahwa Anda dapat mencari disjungsi token dalam panggilan fungsi penelusuran yang sama.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
Hasil:
nick_name amount_added Rainy day fund for the things I still want to do 300 Fund for vacation at the north pole 500
Properti tepi grafik penelusuran
Contoh ini menunjukkan cara menelusuri tepi tertentu dalam grafik
Perbarui
AccountTransferAccount.notes
dengan pesan teks.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;
Gunakan penelusuran teks lengkap untuk menemukan tepi Transfer yang berisi "trip". Gunakan penelusuran grafik untuk menemukan node sumber dan tujuan transfer tersebut.
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
Hasil:
src_id dst_id notes 20 7 <trip's very fun!> 16 20 for trip fund
Fungsi penelusuran mengingat hasil pertama dengan benar meskipun ada tag HTML dalam teks.
Langkah selanjutnya
- Pelajari kueri Spanner Graph.
- Pelajari penelusuran teks lengkap.
- Pelajari kueri penelusuran teks lengkap.