בנוסף להתאמה מלאה של טוקנים, אינדקסים לחיפוש ב-Spanner תומכים בחיפושים של מחרוזות משנה. בדף הזה מוסבר איך לבצע חיפוש של מחרוזת משנה כחלק מחיפוש טקסט מלא ב-Spanner.
לחיפושים של מחרוזות משנה יש את המאפיינים הבאים:
- לא תלוי-רישיות, מתעלם מרוב סימני הפיסוק ומנרמל את הרווחים הלבנים.
- אין פילוח לפי סינית, יפנית או קוריאנית (CJK), כי שאילתות חלקיות ב-CJK לרוב מפולחות בצורה שגויה.
- אם מחפשים כמה מונחים, התוצאה צריכה להכיל מחרוזת משנה מכל מונח. לדוגמה,
'happ momen'תואם ל-"happy moment", כי שתי המחרוזות נמצאות בטקסט. הוא לא תואם ל-"happy day".
דוגמאות
| טקסט מאוחסן | שאילתת מחרוזת משנה | התאמה |
|---|---|---|
| Bridge over Troubled Water | ridg roub | כן |
| Bridge over Troubled Water | ridg , roub | כן |
| Bridge over Troubled Water | over brid | כן |
| Bridge over Troubled Water | גשר ate | כן |
| Bridge over Troubled Water | Bridge bridge bridge | כן |
| Bridge over Troubled Water | bri trou ter | כן |
| Bridge over Troubled Water | bri dge | כן |
| Bridge over Troubled Water | troubledwater | לא |
| Bridge over Troubled Water | trubled | לא |
כדי לחפש מחרוזת משנה, משתמשים בפונקציה TOKENIZE_SUBSTRING
בהגדרת העמודה TOKENLIST, כמו בדוגמה הבאה של DDL:
GoogleSQL
CREATE TABLE Albums (
AlbumId STRING(MAX) NOT NULL,
AlbumTitle STRING(MAX),
AlbumTitle_Tokens TOKENLIST AS (TOKENIZE_SUBSTRING(AlbumTitle)) HIDDEN
) PRIMARY KEY(AlbumId);
PostgreSQL
בדוגמה הזו נעשה שימוש ב-spanner.tokenize_substring.
CREATE TABLE albums (
albumid character varying NOT NULL,
albumtitle character varying,
albumtitle_tokens spanner.tokenlist
GENERATED ALWAYS AS (spanner.tokenize_substring(albumtitle)) VIRTUAL HIDDEN,
PRIMARY KEY(albumid));
בשאלת ה-SQL, משתמשים בפונקציה SEARCH_SUBSTRING בתנאי WHERE. לדוגמה, השאילתה הבאה מתאימה לאלבום עם הכותרת 'happy' מהטבלה שנוצרה בדוגמה הקודמת:
GoogleSQL
SELECT Album
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');
PostgreSQL
בדוגמה הזו נעשה שימוש ב-spanner.search_substring.
SELECT album
FROM albums
WHERE spanner.search_substring(albumtitle_tokens, 'happ');
TOKENIZE_SUBSTRING יוצרת n-grams
לכל טוקן ומאחסנת את ה-n-grams האלה באינדקס החיפוש. אפשר להגדיר את האורך המינימלי והמקסימלי של ה-n-גרמים שייווצרו באמצעות ארגומנטים אופציונליים.
אינדקסים של חיפוש מחרוזות משנה יכולים להשתמש בנפח אחסון גדול פי 10 עד 30 מאינדקסים של חיפוש טקסט מלא באותם נתונים, כי יצירת הטוקנים מייצרת הרבה יותר טוקנים. זה נכון במיוחד אם ההבדל בין ngram_size_min לבין ngram_size_max גדל. גם שאילתות של מחרוזות משנה צורכות יותר משאבים לביצוע.
בדומה ל-TOKENIZE_FULLTEXT,
אפשר להגדיר את TOKENIZE_SUBSTRING כך שישתמש בסוגים ספציפיים של תוכן.
הפעלת חיפוש של מחרוזת משנה יחסית
בנוסף לחיפוש הבסיסי של מחרוזת משנה, SEARCH_SUBSTRING תומך במצב חיפוש יחסי. חיפוש יחסי משפר את תוצאות החיפוש של מחרוזת משנה.
כדי להפעיל את מצב החיפוש היחסי, מגדירים את הפרמטר relative_search_types של
TOKENIZE_SUBSTRING
למערך לא ריק עם רכיבים של סוגי חיפוש יחסי נתמכים.
כשחיפוש יחסי מופעל בטוקניזציה, SEARCH_SUBSTRING יכול לבצע שאילתות עם סוגי החיפוש היחסיים הבאים:
phrase: התאמות של מחרוזות משנה רציפותדוגמאות
טקסט מאוחסן שאילתת מחרוזת משנה. התאמה Bridge over Troubled Water גשר כן Bridge over Troubled Water Bridge bridge bridge לא Bridge over Troubled Water brid over לא Bridge over Troubled Water ridge over trouble כן Bridge over Troubled Water bridge ove troubled לא Bridge over Troubled Water idge ove כן Bridge over Troubled Water idge , ove כן Bridge over Troubled Water RIDGE OVE כן Bridge over Troubled Water גשר מים לא
value_prefix: מחפשת התאמה למחרוזות משנה רצופות, וההתאמה צריכה להתחיל בתחילת הערך. הפונקציה הזו דומה מבחינה קונספטואלית לפונקציהSTARTS_WITHלמחרוזות שעברו נורמליזציה של אותיות רישיות ורווחים.דוגמאות
טקסט מאוחסן שאילתת מחרוזת משנה התאמה Bridge over Troubled Water גשר כן Bridge over Troubled Water גשר , מעל כן Bridge over Troubled Water רכס מעל לא Bridge over Troubled Water troubled water לא
value_suffix: מחפש התאמה למחרוזות משנה רציפות, וההתאמה צריכה להיות בסוף הערך. זה דומה מבחינה רעיונית לפונקציהENDS_WITHלמחרוזות מנורמלות של אותיות רישיות ורווחים.דוגמאות
טקסט מאוחסן שאילתת מחרוזת משנה. התאמה Bridge over Troubled Water troubled water כן Bridge over Troubled Water troubled ; water כן Bridge over Troubled Water roubled water כן Bridge over Troubled Water מים עכורים לא Bridge over Troubled Water בעיות במים לא Bridge over Troubled Water גשר לא
word_prefix:כמוvalue_prefix, אבל המחרוזת צריכה להתאים לגבול של מונח (ולא לגבול של ערך).דוגמאות
טקסט מאוחסן שאילתת מחרוזת משנה התאמה Bridge over Troubled Water over trouble כן Bridge over Troubled Water מעל , בעיה כן Bridge over Troubled Water troub water לא Bridge over Troubled Water מעל המים לא Bridge over Troubled Water ove troubled לא Bridge over Troubled Water ver troubled כן
word_suffix: כמוvalue_suffix, אבל המחרוזת צריכה להתאים לסוף של גבול מונח.דוגמאות
טקסט מאוחסן שאילתת מחרוזת משנה התאמה Bridge over Troubled Water ver troubled כן Bridge over Troubled Water over trouble לא Bridge over Troubled Water מעל המים לא Bridge over Troubled Water ove troubled לא
המאמרים הבאים
- מידע נוסף על שאילתות חיפוש בטקסט מלא
- איך לדרג את תוצאות החיפוש
- איך מחלקים את תוצאות החיפוש לדפים
- איך משלבים שאילתות של טקסט מלא עם שאילתות של טקסט חלקי
- איך מחפשים בכמה עמודות