בדף הזה מוסבר איך להשתמש בחיפוש טקסט מלא ב-Spanner Graph.
Spanner Graph משלב בין גרף לבין חיפוש טקסט מלא במערכת אחת. השילוב הזה מאפשר להפיק תובנות מנתונים לא מובנים בשילוב עם קשרים בתרשים.
לפני שמתחילים
כדי להריץ את הדוגמאות בדף הזה, צריך לבצע את הפעולות שבקטע הגדרה של Spanner Graph והרצת שאילתות באמצעות מסוף Google Cloud . הפעולות הבאות מתבצעות בתהליכים האלה:
יצירת טוקנים ומדדי חיפוש
השלב הראשון בשימוש בחיפוש טקסט מלא הוא ליצור טוקניזציה של התוכן שרוצים לחפש בו וליצור אינדקס חיפוש. חיפוש טקסט מלא מריץ שאילתות על אינדקס החיפוש.
בדוגמה הבאה, מוסיפים את העמודה nick_name_token ומשתמשים בפונקציה TOKENIZE_FULLTEXT כדי ליצור טוקנים מהטקסט בעמודה Account.nick_name. לאחר מכן, נוצר אינדקס חיפוש בעמודה 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);
בדוגמה הבאה נעשה שימוש בפונקציה TOKENIZE_FULLTEXT כדי ליצור טוקניזציה של הטקסט ב-Account.nick_name, ונוצר אינדקס חיפוש בעמודה nick_name_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);
מאחר שנוספו כמה עמודות חדשות ל-Account ול-AccountTransferAccount ואתם ניגשים אליהן כמאפיינים חדשים של גרף בפונקציות חיפוש, אתם צריכים לעדכן את ההגדרה של גרף המאפיינים באמצעות ההצהרה הבאה (הסבר נוסף זמין במאמר עדכון הגדרות קיימות של צמתים או קשתות).
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
);
עכשיו אפשר להשתמש בחיפוש טקסט מלא בנתוני הגרף.
מאפיין של צומת בתרשים החיפוש
בדוגמה הזו מוסבר איך לחפש צמתים בתרשים ולבדוק את הקשרים ביניהם.
מעדכנים את
Account.nick_nameעם כמה הודעות טקסט.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;משתמשים בפונקציה
SEARCHכדי למצוא צמתיAccountבתרשים שכוללים את הערך rainy day או vacation ב-nick_nameשלהם. אפשר להשתמש בחיפוש גרפים כדי למצוא את סכום הכסף שהועבר לחשבונות האלה. לדרג את ההתאמות לפי הרלוונטיות לחיפוש. מיון התוצאות והחזרתן בסדר יורד של רלוונטיות. שימו לב שאפשר לחפש את הפירוק של טוקנים באותה בקשה להפעלת פונקציית חיפוש.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תוצאה:
nick_name amount_added Rainy day fund for the things I still want to do 300 Fund for vacation at the north pole 500
מאפיין קצה של גרף חיפוש
בדוגמה הזו מוסבר איך לחפש קשתות ספציפיות בגרף
עדכון של
AccountTransferAccount.notesבאמצעות הודעת טקסט.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;משתמשים בחיפוש טקסט מלא כדי למצוא קצוות של העברות שמכילים את המילה trip (נסיעה). אפשר להשתמש בגרף כדי למצוא את צמתי המקור והיעד של ההעברות האלה.
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תוצאה:
src_id dst_id notes 20 7 <trip's very fun!> 16 20 for trip fund
פונקציית החיפוש זיהתה נכון את התוצאה הראשונה למרות תגי ה-HTML בטקסט.
המאמרים הבאים
- מידע נוסף על שאילתות של Spanner Graph
- מידע נוסף על חיפוש טקסט מלא
- מידע נוסף על שאילתות חיפוש של טקסט מלא