כיצד לגרום ל־ElasticPress להחזיר את התוצאות הנכונות לכל שפה
למד כיצד להגדיר חיפוש רב-לשוני באתר WordPress שמריץ את WPML ואת ElasticPress. תוסף התאימות WPML ElasticPress בונה אינדקס Elasticsearch נפרד עבור כל שפה באתר שלך, כך שמבקר המחפש מהגרסה הצרפתית מקבל תוצאות בצרפתית – לעולם לא מעורבות עם תוצאות באנגלית או ביפנית. עמוד זה מכסה את ההגדרה, את הסנכרון לכל שפה, וחשוב מכל, כיצד לוודא שהחיפוש מחזיר את התוצאות הנכונות בכל שפה.
אין מה לתרגם בשילוב של ElasticPress. תוסף התאימות גורם ל־ElasticPress להחזיר תוצאות נכונות מבחינת שפה באופן אוטומטי; העבודה שלך היא להתקין את הרכיבים, להפעיל את הסנכרון הראשוני ולאשר שהתוצאות נראות נכון.
לפני שתתחיל
התקן והפעל תוספים אלה באותו אתר:
- ElasticPress. התוסף החינמי בקוד פתוח מבית 10up, זמין ב־WordPress.org (נפתח בלשונית חדשה).
- ליבת WPML וכן WPML תרגום מחרוזות.
- WPML ElasticPress. תוסף התאימות. הורד אותו מעמוד ההורדות של חשבון ה־WPML שלך.
תזדקק גם לנקודת קצה של Elasticsearch: באחסון עצמי, או בשירות מנוהל כמו ElasticPress.io (נפתח בלשונית חדשה), Elastic Cloud, או AWS OpenSearch. הגדר את ElasticPress מול מארח ה־Elasticsearch שלך וודא שהוא מאנדקס בהצלחה באתר חד-לשוני לפני הוספת שכבת ה־WPML.
הגדר את שפות ה־WPML שלך לפני הפעלת הסנכרון הראשון.
כיצד פועל אינדוקס לכל שפה
WPML ElasticPress יוצר אינדקס Elasticsearch נפרד עבור כל שפה באתר שלך. האינדקס של כל שפה מכיל:
- תרגומים לשפה זו עבור כל סוג פוסט שניתן לתרגום.
- פוסטים בשפת ברירת המחדל עבור כל סוג פוסט שמוגדר לחזור לשפת ברירת המחדל כאשר לא קיים תרגום.
- עותקים של פוסטים שאינם ניתנים לתרגום. האינדקס של כל שפה כולל אותם כדי שיוכלו להופיע בתוצאות החיפוש ללא קשר לשפת המבקר.
כל מסמך באינדקס של שפה מנותח באותה שפה. מילות עצירה, גזירת מילים (stemming), קיצורים, וטיפול ברבים ובזמנים הם כולם ספציפיים לשפה. זה מה שגורם לחיפוש בצרפתית להתאים לגזירות מילים בצרפתית ולחיפוש ביפנית להתאים למורפולוגיה יפנית; ללא ניתוח לכל שפה, מנוע החיפוש היה מחיל את הכללים של שפה אחת על הטקסט של כל שאר השפות.
עבור כל חיפוש של מבקר, WPML ElasticPress מנתב את השאילתה לאינדקס השפה המתאים. מאגר התוצאות כבר מסונן לשפה הנכונה לפני שדירוג הרלוונטיות מתחיל.
הפעלת הסנכרון הראשוני
כאשר ארבעת התוספים פעילים ונקודת קצה של Elasticsearch מוגדרת ב־ElasticPress, הפעל את הסנכרון הראשוני:
- פתח את ElasticPressSync באזור הניהול של WordPress.
- לחץ על Start Sync.
WPML ElasticPress מפעיל סנכרון אחד לכל שפה ובונה את האינדקסים לכל שפה בזה אחר זה. באתר גדול זה עשוי לקחת כמה שעות; העמוד מדווח על ההתקדמות בזמן שהסנכרון פועל.
אם אתה מעדכן מ־WPML ElasticPress 1.0 ל־2.0 ואילך, בצע אינדוקס מחדש. פורמט האינדקס השתנה כאשר גרסה 2.0 הציגה אינדקסים לכל שפה.
לאחר הסנכרון הראשוני, עדכוני תוכן זורמים לאינדקס הנכון באופן אוטומטי. בכל פעם שאתה יוצר, משנה או מוחק פוסט, WPML ElasticPress מעדכן את אינדקס השפה המתאים ברקע, בהתבסס על שפת הפוסט או הגדרת התרגום עבור סוג הפוסט שלו.
אינדוקס שפות ספציפיות באמצעות WP-CLI
עבור אתרים גדולים, משימות מתוזמנות, סקריפטים של פריסה, או כל תהליך עבודה שבו ממשק המשתמש של אזור הניהול אינו אפשרות, WPML ElasticPress מספק פקודת WP-CLI (wp wpml_elasticpress sync) שעוטפת את סנכרון ה־CLI של ElasticPress עצמו ומוסיפה דגל --post-lang לבחירת שפה.
הפעלת הסנכרון הראשוני עבור פוסטים באנגלית בלבד:
wp wpml_elasticpress sync --setup --post-type=post --post-lang=en
הדגל --setup מנקה אינדקסים קיימים לפני הבנייה מחדש. לאחר פקודה זו, חיפוש באנגלית יחזיר תוצאות באנגלית; חיפושים משפות אחרות לא יחזירו דבר מכיוון שהאינדקסים שלהן טרם נבנו.
הוספת שפה שנייה מבלי לנקות את האינדקסים הקיימים:
wp wpml_elasticpress sync --post-type=post --post-lang=fr
חזור על הפעולה עבור כל שפה נוספת. השמט את --setup כדי ששפות שאונדקסו קודם לכן יישארו במקומן.
סנכרון מספר שפות בריצה אחת:
wp wpml_elasticpress sync --post-lang=en,es
התאמת גודל האצווה אם יש מחסור בזיכרון:
wp wpml_elasticpress sync --per-page=200
גודל האצווה המוגדר כברירת מחדל הוא 350; הקטנתו עוזרת בשרתים עם מגבלות זיכרון.
בנייה מחדש של כל אינדקס מאפס:
wp wpml_elasticpress sync --setup
פקודה זו מנקה כל אינדקס שפה ובונה את כולם מחדש. השתמש בה כאשר משהו נראה שגוי בכל השפות או לאחר שדרוג משמעותי.
כיצד לבדוק שחיפושי ElasticPress מחזירים תוכן בשפה הנכונה
הסנכרון הטכני הוא פשוט; הערך של עמוד זה טמון באימות. עבור על בדיקות אלה לאחר השלמת הסנכרון הראשוני, ושוב בכל פעם שאתה משנה תוכן או הגדרות שמשפיעים על התנהגות החיפוש.
1. החיפוש מחזיר תוצאות באותה שפה מכל שפה
מצד הלקוח, העבר את בורר השפות לכל שפה בתורה וחפש מונח שאתה יודע שקיים בצורתו המתורגמת.
- עובר. עמוד התוצאות מציג רק פוסטים באותה שפה.
- נכשל. תוצאות משפות אחרות מופיעות לצד התאמות באותה שפה. ייתכן שהסנכרון לא הושלם עבור אותה שפה – בדוק אם יש שגיאות ב־ElasticPressSync והפעל מחדש את פקודת ה־WP-CLI הספציפית לשפה.
2. תוכן בשפת המקור בלבד מחזיר אפס תוצאות בשפות אחרות
בחר פוסט שקיים רק בשפת ברירת המחדל שלך – ללא תרגום בשפות האחרות באתר. מגרסה של האתר שאינה בשפת ברירת המחדל, חפש ביטוי מתוך אותו פוסט.
- עובר. אפס תוצאות. הפוסט אינו מתורגם לשפת המבקר, לכן הוא לא אמור להופיע.
- נכשל. הפוסט מופיע בתוצאות. משמעות הדבר היא בדרך כלל שסוג הפוסט מוגדר לחזור לשפת ברירת המחדל ב־WPMLהגדרותתרגום סוגי פוסטים. זוהי הגדרה ברמת WPML, לא באג. אם לא התכוונת לאפשר חזרה זו, שנה את ההגדרה.
3. פוסטים קשורים נשארים באותה שפה
פתח פוסט מתורגם בצד הלקוח. הווידג'ט Related Posts אמור להציג פוסטים אחרים באותה שפה בלבד.
- עובר. כל פוסט קשור מקשר לתוכן באותה שפה של העמוד הנוכחי.
- נכשל. מופיעים פוסטים קשורים משפות אחרות. ודא שהתכונה Related Posts מופעלת ב־ElasticPressFeatures ושהאינדקס של השפה הנוכחית סיים להסתנכרן.
4. חיפוש מסמכים מסנן לפי שפה
אם התכונה Documents מופעלת ב־ElasticPress: העלה קובץ PDF מתורגם לגרסת שפת המקור של פוסט, ולאחר מכן העלה קובץ PDF בשפה אחרת לתרגום שלו. חפש ביטוי שמופיע רק בקובץ ה־PDF המתורגם.
- עובר. החיפוש מצד הלקוח בשפה התואמת מחזיר את קובץ ה־PDF הנכון; החיפוש בשפת המקור אינו מחזיר את קובץ ה־PDF המתורגם ולהפך.
- נכשל. קובצי PDF משפות אחרות מופיעים בתוצאות. סנכרן מחדש לאחר הפעלת Documents. הפקודה
wp wpml_elasticpress sync --setupבונה מחדש כל אינדקס עם אינדוקס מסמכים.
5. חיפושים באזור הניהול (מונחים, תגובות, משתמשים) מסוננים לפי שפה
אם הפעלת את התכונות Terms, Comments, או Users ב־ElasticPressFeatures, חפש בהן מאזור הניהול של WordPress וודא שהתוצאות מסוננות לפי שפת אזור הניהול הנוכחית. הדבר משפיע על משתמשים המחפשים באזור הניהול של אתר רב-לשוני.
6. סנכרון Multisite אינו מנקה אינדקסים של אתרים אחים
אם אתה מריץ את WPML ואת ElasticPress ברשת מולטיסייט (Multisite), הפעל סנכרון אינדקס באתר אחד ולאחר מכן בדוק את האתרים האחרים ברשת. האינדקסים שלהם אמורים להישאר ללא פגע.
- עובר. אינדוקס אתר אחד משאיר את האינדקסים של האתרים האחים ללא שינוי.
- נכשל. אינדקסים אחים ריקים. עצור, הפעל מחדש את הסנכרונים באתרים המושפעים, ודווח על הבעיה לתמיכה של WPML כדי שיוכלו לאשר אם נתקלת בבעיית מולטיסייט היסטורית או בבעיה חדשה.
אם כל הבדיקות לעיל עוברות בהצלחה, החיפוש הרב-לשוני שלך פועל כמתוכנן.
תכונות נתמכות של ElasticPress
WPML ElasticPress הופך כיום את התכונות הבאות של ElasticPress למודעות-שפה:
- חיפוש פוסטים. חיפוש מצד הלקוח בפוסטים, עמודים, וסוגי תוכן מותאמים אישית.
- פוסטים קשורים. הווידג'ט של פוסטים קשורים מסנן להתאמות באותה שפה.
- מסמכים. חיפוש בתוך קובצי PDF מצורפים,
.docx,.pptx, וסוגי קבצים אחרים. - מונחים, תגובות, ומשתמשים. חיפושים באזור הניהול.
תכונות החיפוש הספציפיות ל־WooCommerce של ElasticPress (גילוי מוצרים, סינון מוצרים מרובה-פנים, חיפוש מוצרים מיידי בקטלוגים) אינן רב-לשוניות כרגע. כיסוי רב-לשוני לחיפוש ב־WooCommerce נמצא במפת הדרכים של WPML; עד שהוא יושק, חיפוש WooCommerce באתרים רב-לשוניים עובר דרך הטיפול הסטנדרטי של WooCommerce Multilingual של WPML, ולא דרך ElasticPress.
מכשולים נפוצים
- הסנכרון לא פעל לאחר הפעלת תכונה חדשה של ElasticPress. הפעלת Documents או Related Posts ב־ElasticPressFeatures אינה מוסיפה מסמכים אלה לאינדקס רטרואקטיבית. סנכרן מחדש לאחר הפעלה או כיבוי של תכונות.
- סנכרון WP-CLI ללא
--setupלאחר שינוי משמעותי. אם שינית אילו סוגי פוסטים ניתנים לתרגום, אילו תכונות מופעלות, או שדרגת את WPML ElasticPress מעבר לגבול של גרסה ראשית, הפעל אתwp wpml_elasticpress sync --setupכדי לבנות מחדש כל אינדקס מאפס. - תבנית תוצאות החיפוש של ערכת העיצוב עוקפת את הפילטרים של ElasticPress. חלק מערכות העיצוב המותאמות אישית מיישמות שאילתת תוצאות חיפוש משלהן שאינה עוברת דרך ElasticPress. אם התוצאות נראות שגויות רק בצד הלקוח (ועוברות את בדיקות אזור הניהול), ייתכן שתבנית ערכת העיצוב זקוקה לעדכון.
- חיפוש מוצרים ב־WooCommerce מחזיר תוצאות בשפות מעורבות. זו אינה בעיית סנכרון. זהו פער הכיסוי של WooCommerce שהוזכר לעיל. נתב את חיפוש המוצרים דרך הטיפול הסטנדרטי של WooCommerce Multilingual לעת עתה.
- טקסט של מסמכים אינו מופיע בחיפוש. ודא שתכונת ה־Documents מופעלת ב־ElasticPressFeatures ושהופעל סנכרון מאז הפעלתה.