מנתחי Elasticsearch מותאמים אישית: שפה, מילים נרדפות

האנלייזר הסטנדרטי של Elasticsearch לרוב לא מצליח להבין מילים נרדפות ואת הדקויות של השפה הרוסית, מה שגורם למשתמשים לא למצוא את המוצרים שהם צריכים. אנחנו בונים אנלייזרים מותאמים אישית במפתח מלא, ומגדירים מורפולוגיה של שפה, מילים נרדפות והשלמה אוטומטית. הצוות שלנו מטפל בכל התהליך—מבדיקת צרכים ועד הטמעה ותמיכה שוטפת—כך שהחיפוש עובד בצורה אמינה וגדל יחד עם העסק שלכם.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
מנתחי Elasticsearch מותאמים אישית: שפה, מילים נרדפות
מורכב
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

החיפוש באתר שלך לא מוצא "ноутбук" כשהמשתמש מקליד "лэптоп"? או ש"смартфон" לא מחזיר תוצאות עבור "телефон"? זו בעיה אופיינית של האנלייזר הסטנדרטי של Elasticsearch: הוא לא מבין מילים נרדפות ומורפולוגיה של שפה. כדי לגרום לחיפוש לעבוד כמו שצריך, אנחנו מפתחים אנלייזרים מותאמים אישית במפתח פתוח. במשך יותר מ-5 שנים, כיווננו חיפוש עבור יותר מ-50 פרויקטים, כולל חנויות מסחר אלקטרוני ופורטלי חדשות. אנלייזר מותאם אישית מורכב מטוקנייזר ומסנני טוקנים. הם הופכים טקסט לקבוצת טוקנים לאינדקס. במאמר זה, נפרק כיצד להרכיב אנלייזר כזה עבור רוסית, להגדיר מילים נרדפות והשלמה אוטומטית, ולבחון מלכודות טיפוסיות וכיצד להימנע מהן.

עד 70% מהמשתמשים לא מוצאים את המוצר הנכון בגלל הגדרת אנלייזר שגויה. זה מפחית המרה ב-20–30%. הגדרת אנלייזר מותאם אישית פותרת את הבעיה על ידי בחירת מסננים המותאמים לתחום שלך.

מסנן מטרה דוגמת טוקן
lowercase המרה לאותיות קטנות Ноутбук → ноутбук
stop הסרת מילות עצירה на, в, с
stemmer גיזום (Stemming) ноутбуки → ноутбук
synonym מילים נרדפות ноутбук ↔ лэптоп
edge_ngram N-grams להשלמה אוטומטית ноут → н, но, ноу, ноут

למה אנלייזר מותאם אישית עדיף על המובנה?

האנלייזר המובנה russian משתמש באלגוריתם Snowball לגיזום. לרוב המשימות זה מספיק, אבל אם אתה צריך מורפולוגיה מדויקת או קבוצה מותאמת של מילות עצירה, אנחנו יוצרים אנלייזר מותאם אישית. זה נותן לך שליטה מלאה על שרשרת המסננים: אתה מחליט אילו מילות עצירה להסיר, איך לטפל במילים נרדפות, והאם יש צורך בגיזום. בנוסף, הגדרה מותאמת אישית מאפשרת הוספת תעתיק לחיפוש בתעתיק (למשל, "noutbuk" → "ноутбук").

איך להגדיר אנלייזר שפה לרוסית?

הגדרה בסיסית

דוגמה עם מילות עצירה מותאמות ושדה להתאמה מדויקת:

{ "settings": {
    "analysis": {
      "filter": {
        "russian_stop": {
          "type": "stop",
          "stopwords": "_russian_"
        },
        "russian_stemmer": {
          "type": "stemmer",
          "language": "russian"
        },
        "custom_stopwords": {
          "type": "stop",
          "stopwords": ["это", "также", "при", "для", "что", "как"]
        }
      },
      "analyzer": {
        "russian_custom": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "russian_stop", "custom_stopwords", "russian_stemmer"]
        },
        "russian_exact": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase"]
        }
      }
    }
  }
}

הוספת תעתיק

משתמשים לעתים קרובות מקלידים בתעתיק: "noutbuk" במקום "ноутбук". תעתיק מיושם דרך { "settings": { "analysis": { "filter": { "russian_stop": { "type": "stop", "stopwords": "_russian_" }, "russian_stemmer": { "type": "stemmer", "language": "russian" }, "custom_stopwords": { "type": "stop", "stopwords": ["это", "также", "при", "для", "что", "как"] } }, "analyzer": { "russian_custom": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "russian_stop", "custom_stopwords", "russian_stemmer"] }, "russian_exact": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase"] } } } } } מסוג char_filter, שבו כל אות קירילית ממופה למקבילה לטינית. רשימת המיפוי המלאה נמצאת בתיעוד — אנחנו כוללים אותה באנלייזר. לתעתיק מתקדם, אנחנו משתמשים בתוסף mapping עם ממירי ICU, שמטפל נכון בנורמליזציה של Unicode.

איך להגדיר מילים נרדפות ללא אינדקס מחדש?

מילים נרדפות מאפשרות למצוא מסמכים עם ניסוח שונה. יש שתי גישות:

פרמטר מילים נרדפות בזמן אינדוקס מילים נרדפות בזמן חיפוש
עדכון דורש אינדוקס מחדש ללא אינדוקס מחדש, דרך analysis-icu
ביצועי חיפוש מהיר יותר (פחות טוקנים בשאילתה) איטי יותר (עיבוד נוסף)
גמישות נמוכה גבוהה

האפשרות המומלצת היא מילים נרדפות בזמן חיפוש. הן מאפשרות לשנות כללים ללא אינדוקס מחדש, מה שחיוני לחנויות מסחר אלקטרוני עם מבחר משתנה במהירות. לדוגמה, קובץ מילים נרדפות _reload_search_analyzers:

ноутбук, лэптоп, laptop, notebook смартфон, телефон, мобильный телевизор, тв, tv 

הגדרת אנלייזר עם מילים נרדפות (רק לחיפוש):

{
  "settings": {
    "analysis": {
      "filter": {
        "synonym_filter": {
          "type": "synonym",
          "synonyms_path": "synonyms/synonyms.txt",
          "updateable": true
        }
      },
      "analyzer": {
        "search_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "russian_stop", "synonym_filter"]
        },
        "index_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "russian_stop", "russian_stemmer"]
        }
      }
    }
  }
}

הדגל config/synonyms/synonyms.txt הוא חובה למילים נרדפות רק לחיפוש. הוא מאפשר טעינה מחדש של מילים נרדפות דרך ноутбук, лэптоп, laptop, notebook смартфон, телефон, мобильный телевизор, тв, tv ללא אינדוקס מחדש. חיסכון בתקציב: אין צורך לבנות מחדש את האינדקס בכל פעם שהמילון משתנה.

הגדרת השלמה אוטומטית עם Edge N-gram

להשלמה אוטומטית בזמן הקלדה, אתה צריך אנלייזר עם { "settings": { "analysis": { "filter": { "synonym_filter": { "type": "synonym", "synonyms_path": "synonyms/synonyms.txt", "updateable": true } }, "analyzer": { "search_analyzer": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "russian_stop", "synonym_filter"] }, "index_analyzer": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "russian_stop", "russian_stemmer"] } } } } } :

"filter": {
  "edge_ngram_filter": {
    "type": "edge_ngram",
    "min_gram": 2,
    "max_gram": 15
  }
}

בזמן חיפוש, השתמש באנלייזר ללא N-gram (למשל, רק "updateable": true), אחרת שאילתה עבור "ноут" תתאים לכל טוקני ה-N-gram, מה שיגרום לתוצאות חיוביות שגויות.

אינדקסים רב-לשוניים

שתי גישות: אינדקס אחד עם שדות לכל שפה או אינדקס נפרד לכל שפה. עבור אתרים מרובי אתרים, אינדקס אחד נוח יותר:

"properties": {
  "title_ru": {
    "type": "text",
    "analyzer": "russian_custom"
  },
  "title_en": {
    "type": "text",
    "analyzer": "english"
  },
  "title_de": {
    "type": "text",
    "analyzer": "german"
  }
}

שאילתה על פני מספר שפות:

{
  "query": {
    "multi_match": {
      "query": "search term",
      "fields": ["title_ru^2", "title_en", "title_de"]
    }
  }
}

הגבר _reload_search_analyzers עבור השדה הרוסי אם הקהל העיקרי שלך הוא דובר רוסית.

מה כלול בפיתוח ולוחות זמנים

אנחנו מספקים פתרון מלא במפתח פתוח. הפיתוח כולל:

  • ניתוח הנתונים ודרישות החיפוש שלך
  • עיצוב שרשרת מסננים למשימות שלך
  • הגדרת מילים נרדפות עם יכולת עדכון מקוון
  • אינטגרציה עם האינדקס הקיים שלך
  • בדיקות על שאילתות אמיתיות (לפחות 100 תרחישי בדיקה)
  • תיעוד על הגדרות ותחזוקה
  • הדרכה לצוות שלך (עד שעתיים מקוונות)

פיתוח ובדיקות של אנלייזר מותאם אישית לשפה אחת — מיום עסקים אחד. הגדרת מילים נרדפות עם קובץ ומנגנון עדכון — חצי יום נוסף. הגדרה רב-לשונית עם 3–5 שפות — 2–3 ימים, כולל בדיקות רלוונטיות חיפוש. העלות מחושבת באופן אישי.

הזמן הגדרת אנלייזר לפרויקט שלך — נמצא את ההגדרה האופטימלית.

איך אנחנו ניגשים להגדרה

  1. ביקורת חיפוש נוכחית — איסוף לוגים של שאילתות, זיהוי תרחישים בעייתיים.
  2. עיצוב אנלייזר — הגדרת קבוצת מסננים, מילים נרדפות, מילות עצירה.
  3. אב-טיפוס — פריסת אינדקס בדיקה ובדיקה על נתונים אמיתיים.
  4. בדיקות — שימוש ב-API edge_ngram כדי לוודא כל מסנן. לדוגמה:
POST /products/_analyze
{
  "analyzer": "russian_custom",
  "text": "Ноутбуки и лэптопы для работы"
}

התשובה מכילה רשימת טוקנים — המספר והסוג שלהם צריכים להתאים לציפיות (גיזום מקצר סיומות, מילים נרדפות מרחיבות טוקנים). 5. אופטימיזציה — התאמת הגדרות לפי תוצאות בדיקה. 6. פריסה — עדכון אינדקס הייצור ללא השבתה. 7. ניטור — לאחר השקה, מעקב אחר מדדי חיפוש (CTR, תוצאות ריקות).

למה להפקיד הגדרה בידי מקצוענים?

הגדרת אנלייזר שגויה יכולה להפחית רלוונטיות חיפוש פי 2–3. המהנדסים המוסמכים שלנו מבטיחים שאחרי ההגדרה, החיפוש יהיה מדויק ומהיר. קבל ייעוץ על פיתוח אנלייזר — נעריך את הפרויקט שלך ונציע את הפתרון הטוב ביותר. צור קשר כדי לדון בפרטים.

למידע נוסף על אנלייזרים של Elasticsearch.