בנוסף להתאמה מלאה של טוקנים, אינדקסים של חיפושים ב-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 | גשר אכילה | כן |
| 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);
CREATE SEARCH INDEX AlbumsTitleIndex ON Albums(AlbumTitle_Tokens);
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));
CREATE SEARCH INDEX albumstitleindex ON albums(albumtitle_tokens);
בשאלת ה-SQL, משתמשים בפונקציה SEARCH_SUBSTRING בתנאי WHERE. לדוגמה, השאילתה הבאה מתאימה לאלבום עם הכותרת 'happy' מהטבלה שנוצרה בדוגמה הקודמת:
GoogleSQL
SELECT AlbumId
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');
PostgreSQL
בדוגמה הזו נעשה שימוש ב-spanner.search_substring.
SELECT albumid
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 troubled wate לא Bridge over Troubled Water trouble water לא Bridge over Troubled Water גשר לא
word_prefix:כמוvalue_prefix, אבל המחרוזת צריכה להתאים לגבול של מונח (ולא לגבול של ערך).דוגמאות
טקסט שמור שאילתת מחרוזת משנה התאמה Bridge over Troubled Water over trouble כן Bridge over Troubled Water מעל , בעיות כן Bridge over Troubled 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 לא
המאמרים הבאים
- מידע נוסף על שאילתות חיפוש בטקסט מלא
- איך לדרג את תוצאות החיפוש
- איך מחלקים את תוצאות החיפוש לדפים
- איך משלבים שאילתות של טקסט מלא עם שאילתות שאינן טקסט
- איך מחפשים בכמה עמודות