בדף הזה מוסבר מהו חיפוש טקסט מלא ואיך הוא פועל.
חיפוש טקסט מלא מאפשר לכם ליצור אפליקציה שיכולה לחפש בטבלה מילים, ביטויים או מספרים, במקום לחפש רק התאמות מדויקות בשדות מובנים. חיפושים של טקסט מלא מחזירים לאפליקציה את הנתונים האחרונים שהועברו, באופן עקבי מבחינת טרנזקציות. היכולות של חיפוש טקסט מלא ב-Spanner כוללות גם תיקון שגיאות איות, אוטומציה של זיהוי השפה של קלט החיפוש ודירוג תוצאות החיפוש. מערכת Spanner מרחיבה באופן אוטומטי את חיפושי הטקסט כך שיכללו התאמה משוערת של מילים.
צריך ליצור אינדקס חיפוש בכל העמודות שרוצים להפוך לזמינות לחיפושים של טקסט מלא. מערכת Spanner מנתחת את הנתונים בעמודות האלה כדי לזהות מילים ספציפיות שאפשר להוסיף לאינדקס החיפוש. מערכת Spanner מעדכנת את אינדקס החיפוש בנתונים חדשים או בנתונים שעברו שינוי ברגע שהם נשמרים במסד הנתונים.
סוגים של חיפוש טקסט מלא
- חיפוש טקסט בסיסי: חיפוש תוכן באמצעות מילה או ביטוי שלמים או חלקיים כדי לקבל תוצאות מהימנות. דוגמאות לפרדיקטים של שאילתות:
- התאמה לכל המילים [tricolor rat terrier]
- מילים או ביטויים מדויקים ['rat terrier']
- מילה כלשהי מבין המילים הבאות [miniature OR standard]
- מילה בקרבה [world AROUND(3) cup]
- מחרוזת משנה [התחלה*]
- חיפוש מספרי: חיפוש של שוויון או אי-שוויון מספרי. חיפושים של שוויון מתאימים למספר. חיפושים של טווחים ואי-שוויונים מתאימים למספר בטווח מסוים.
- חיפוש מבוסס n-gram: התאמה למילים עם גרסאות איות שונות, כולל שמות עצם ושמות. סוג החיפוש הזה עוזר גם להתאים טקסט של שאילתות לשמות עם שגיאות כתיב, לשמות עם איות חלופי ולטקסט עם וריאציות אחרות של איות.
- חיפושי Soundex: התאמה למילים שנשמעות דומה.
תכונות של חיפוש טקסט מלא
חיפוש הטקסט המלא ב-Spanner כולל את התכונות הבאות:
- תוצאות חיפוש מדורגות: מחשבת ציון כדי להעריך את מידת ההתאמה של שאילתה למסמך (לדוגמה, נותנת משקל גבוה יותר ל-column_A). אפשר להשתמש בביטויי SQL כדי להתאים אישית את הדירוג.
- קטעי מידע: הדגשה של הטקסט התואם בתוצאת החיפוש.
- תמיכה גלובלית: תמיכה אוטומטית בטוקניזציה בשפות שונות, כולל פילוח CJK. ציון שפה באופן ידני מאפשר לכם לבצע כוונון עדין נוסף.
- Governance: חיפוש של כל מופע של מילים ספציפיות.
- תיקון איות: תיקון אוטומטי של מילים עם איות שגוי בשאילתות, כדי להתאים למילה עם איות נכון באחסון. לדוגמה, אם המשתמש מחפש את המילה "girafe", החיפוש ימצא מסמכים עם המילה "giraffe".
- הוספה של מילים נרדפות בהתאם להקשר, כולל מילות קישור: המערכת מוסיפה באופן אוטומטי מילים נרדפות שרלוונטיות להקשר כדי להגדיל את ההיזכרות. לדוגמה, "הבית" תואם ל "הבית הזה", ו "תמונה של חתול" תואמת ל "תמונה של חתלתול".
- תרגום מספרי בהתאם להקשר לטקסט ומטקסט למספר: התאמה בין הגרסה הטקסטואלית של מספר לבין הייצוג המספרי שלו, ולהפך. לדוגמה, 'five cats' תואם ל-'5 cats'.
- המרת צורת רבים אוטומטית: התאמה בין cat ל-cats.
מושגים בחיפוש טקסט מלא
המושגים העיקריים שקשורים לחיפוש טקסט מלא הם:
- מסמך מתייחס לנתונים שניתנים לחיפוש בשורה מסוימת.
- טוקן הוא כל מילה במסמך שמאוחסן באינדקס חיפוש.
- תהליך טוקניזציה מפצל מסמך לטוקנים.
- טוקנייזר הוא פונקציית SQL שמשמשת לטוקניזציה.
- אינדקס הפוך מאחסן טוקנים. משתמשים בשאילתות SQL כדי לחפש באינדקס ההפוך.
דוגמה לתרחיש שימוש בחיפוש טקסט מלא
כדי להבין מהו חיפוש טקסט מלא, נבחן אפליקציה שמשתמשת במסד נתונים כדי לאחסן שירים של כל זמר. כל שורה היא שיר אחד. כל שיר מכיל עמודות כמו שם השיר, מילים, זמר ואלבום. האפליקציה משתמשת בחיפוש טקסט מלא כדי לאפשר למשתמש לחפש שיר באמצעות שאילתות בשפה טבעית:
- החיפוש תומך בשאילתות שמשתמשות באופרטור
OR, כמוPrince OR Camille. אפליקציות יכולות להזין ישירות את הקלט של משתמש הקצה מתיבת החיפוש לפונקציית ה-SQLSEARCH(באמצעות תחביר rquery). מידע נוסף זמין במאמר בנושא שליחת שאילתה לאינדקס חיפוש. - Spanner משתמש באינדקסים של חיפוש כדי לחפש מסמכים תואמים בשדות שונים. לדוגמה, אפליקציה יכולה להנפיק שאילתה לחיפוש 'cry' בשם, עם 'so cold' במילים ועם 'Prince' כזמר.
שימושים אחרים באינדקסים של חיפוש
למדדי חיפוש יש מגוון שימושים בנוסף לחיפוש טקסט מלא, למשל:
יצירת אינדקס לאלמנטים בעמודות של מערכים. נניח שיש אפליקציה שמשתמשת בעמודת מערך כדי לאחסן תגים שמשויכים לפריט. באמצעות אינדקסים של חיפוש, האפליקציה יכולה לחפש ביעילות שורות שמכילות תג ספציפי. מידע נוסף זמין במאמר בנושא טוקניזציה של מערכים.
חיפוש נתונים שנמצאים בהצטלבות של קבוצת תנאי שאילתה. לדוגמה, אפשר להשתמש בקבוצה שרירותית של מאפיינים (צבע, מידה, מותג, דירוג וכו') כדי לחפש מוצר בקטלוג.
שימוש בתנאי חיפוש מספריים, לבד או בשילוב עם תנאי חיפוש של טקסט מלא. דוגמאות למקרים שבהם אינדקס חיפוש שימושי לחיפושים מספריים:
- כשמשלבים אותו עם אפליקציה של טקסט מלא. לדוגמה, כדי למצוא אימייל עם הנושא תמונה וגודל שגדול מ-1MB.
- כשהוא חלק מהצטלבות של תנאים שמתוארת למעלה.
לדוגמה, כדי למצוא מוצרים שבהם
color = "yellow" AND size = 14 AND rating >= 4.5. - כשמחפשים את החיתוך של עמודות מספריות. לדוגמה, נניח שיש טבלה שבה מאוחסנות שעות ההתחלה והסיום של אירועים. אפשר להשתמש באינדקסים של חיפושים כדי להטמיע ביעילות שאילתה שמחפשת אירועים שהתרחשו בנקודת זמן מסוימת:
start_time <= @p AND end_time > @p.
מידע נוסף מופיע במאמר בנושא אינדקסים מספריים.
שלבים לחיפוש טקסט מלא
ב-Spanner, כדי לבצע חיפוש טקסט מלא צריך לבצע את השלבים הבאים:
- יצירת טוקנים ממסמך באמצעות פונקציות ליצירת טוקנים של Spanner, כמו
TOKENIZE_SUBSTRING. למידע נוסף, ראו טוקניזציה. - יוצרים אינדקס חיפוש כדי לאחסן את האסימונים באמצעות הצהרת ה-DDL
CREATE SEARCH INDEX. מידע נוסף זמין במאמר בנושא אינדקסים של חיפושים. - מריצים שאילתה במסמכים באינדקס החיפוש באמצעות הפונקציה
SEARCHשל Spanner. מידע נוסף זמין במאמר סקירה כללית על שאילתות. - מדרגים את תוצאות השאילתה באמצעות הפונקציה Spanner
SCORE. מידע נוסף זמין במאמר בנושא דירוג תוצאות החיפוש.
מגבלות
- חיפוש טקסט מלא לא תומך ב-Assured Workloads.
תמחור
אין חיובים נוספים מ-Spanner כשמשתמשים בחיפוש טקסט מלא, אבל ההטמעה של חיפוש טקסט מלא מגדילה את העלויות בגלל הצורך במשאבי מחשוב ואחסון נוספים.
מידע נוסף זמין במאמר תמחור של Spanner.
המאמרים הבאים
- מידע על יצירת טוקנים ועל כלי ליצירת טוקנים ב-Spanner
- מידע נוסף על אינדקסים של חיפושים
- מידע נוסף על שאילתות חיפוש בטקסט מלא