AlloyDB Omni תומך בכל התכונות והיכולות של חיפוש טקסט מלא, כולל תמיכה באינדקסים של GIN ו-GiST.
מושגי ליבה של חיפוש טקסט מלא
כדי להטמיע ביעילות חיפוש טקסט מלא (FTS), חשוב להבין איך PostgreSQL מעבד טקסט ומחפש בו. יחידת החיפוש, מסמך, היא בדרך כלל עמודת טקסט או שילוב של עמודות משורה. תהליך יצירת האינדקס מנתח את המסמך הזה כדי לשייך מילים (או לקסמות, צורת הבסיס של מילה) לשורה.
התהליך הזה כולל צינור עיבוד נתונים מקדים, שבו הטקסט הגולמי עובר המרה לפורמט שניתן לחפש בו, באמצעות:
- פירוק הטקסט לטוקנים.
- הסרת מילות עצירה נפוצות.
- נרמול מילים לצורת השורש שלהן. לדוגמה, "ריצה" היא הלקסמה של "ריצה", "ריצות", "לרוץ" ו "רץ".
כדי להשתמש בחיפוש טקסט מלא, צריך גם ללמוד על סוגי נתונים מיוחדים, אופרטורים ואסטרטגיות שונות של הוספה לאינדקס, כולל אינדקסים מובנים של PostgreSQL ואינדקסים של RUM עם ביצועים גבוהים.
ב-PostgreSQL יש שני סוגי נתונים עיקריים ואופרטור התאמה לניהול FTS:
-
tsvector: מייצג מסמך בפורמט שניתן לחיפוש – כרשימה ממוינת של לקסמות נפרדות. -
tsquery: מייצג מונחי חיפוש, כולל אופרטורים בוליאניים שמאפשרים לשלב לקסמות. -
@@: בודקת אםtsvectorתואם ל-tsquery, ומאפשרת חיפושים שמותאמים לשפה.
AlloyDB Omni תומך בכל סוגי האינדקסים לחיפוש טקסט מלא שנתמכים ב-PostgreSQL המובנה. הבחירה באינדקס תלויה באיזון בין מהירות החיפוש, משך הזמן של תהליך ה-build של האינדקס, מהירות העדכון והפונקציות הספציפיות של החיפוש שנדרשות, כמו חיפוש ביטויים או דירוג רלוונטיות.
למידע נוסף על איך יוצרים ומשתמשים באינדקסים של RUM ב-AlloyDB Omni, ראו איך יוצרים ומנהלים אינדקס RUM ב-AlloyDB ל-PostgreSQL.
שילוב של חיפוש סמנטי וחיפוש בטקסט מלא
ההטמעות הכי יעילות של חיפוש משלבות בדרך כלל חיפוש טקסט מלא באמצעות אינדקסים של RUM וחיפוש וקטורי. כדי לשלב את היתרונות של הבנה סמנטית והתאמה מדויקת למילות מפתח, אפשר להשתמש בחיפוש היברידי שמשלב את קבוצות התוצאות השונות לדירוג מקיף.
לדוגמה, באפליקציית מסחר אלקטרוני, אפשר קודם להשתמש בחיפוש טקסט מלא עם RUM כדי למצוא מוצרים שמכילים מילות מפתח ספציפיות כמו "נעלי ריצה", ואז להשתמש בחיפוש וקטורי כדי למצוא תוצאות על סמך דמיון סמנטי לשאילתה מפורטת יותר של משתמש, כמו "נעליים נוחות לאימונים למרחקים ארוכים". לאחר מכן, מסד הנתונים ממזג את התוצאות המדורגות משני רכיבי החיפוש לרשימה אחת מאוחדת באמצעות אלגוריתם Reciprocal Rank Fusion (RRF) כדי ליצור דירוג סופי.