הגדרה של מילים נרדפות

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

המילים הנרדפות מוגדרות על ידי הוספה לאינדקס של פריטים עם הסכימה המוכרת _dictionaryEntry.

לפריטים מסוג _dictionaryEntry יכולים להיות המאפיינים הבאים:

נכס סוג תיאור חובה?
_term מחרוזת המונח שיש להגדיר. הערכים המומלצים הם מילים או ביטויים שאינם מוקפים במקף, ללא סימני פיסוק. חובה
_מילה נרדפת מחרוזת (חוזרת) מונחים חלופיים שייכללו בשאילתות שתואמות למחרוזת שהוגדרה ב-_term. חובה
_onlyApplicableForAttachedSearchApplications בוליאני מאפשר לקבץ מילים נרדפות לפי מקור נתונים ואפליקציית חיפוש. מידע נוסף זמין במאמר הגדרת מילים נרדפות ספציפיות למקור נתונים. אופציונלי

כשמשתמש כולל בשאילתה את הערך של המאפיין _term, השאילתה האפקטיבית הופכת ל "מונח OR מילים נרדפות". לדוגמה, אם המונח 'scifi' מוגדר במילה 'מדע בדיוני', אז שאילתה שמכילה את המילה 'scifi' תואמת לפריטים שמכילים 'scifi' או 'מדע בדיוני'.

לא ניתן להחיל מילים נרדפות באופן דו-כיווני. אם השאילתה היא "מדע בדיוני", לא נוכל להשתמש במילים נרדפות לשאילתה. השאילתה תואמת רק לפריטים שמכילים 'מדע בדיוני'. פריטים שמכילים את המילה 'scifi' לא ייכללו.

כדי ששני המונחים יהיו שניתנים להחלפה, צריך להגדיר כל מונח בנפרד:

מונח מילים נרדפות
scifi מדע בדיוני
מדע בדיוני scifi

במהלך עיבוד השאילתה, המקף וסימני פיסוק אחרים מוסרים לפני השימוש במילים נרדפות. שאילתת המשתמש 'sci-fi' תואמת ל-'sci fi' של _term. כדי ליצור מילים נרדפות למונחים שהמשתמשים עשויים להחליף במקפים, קודם צריך לנרמל את _term כך שיהיה רווח לבן במקום מקפים.

בהמשך לדוגמה, ההגדרות הבאות תואמות לשאילתות של משתמשים: 'מדע בדיוני', 'מדע בדיוני', 'scifi' ו'מדע בדיוני' מתחלפות ביניהן:

מונח מילים נרדפות
scifi מדע בדיוני, מדע בדיוני
מדע בדיוני מדע בדיוני, מדע בדיוני
מדע בדיוני scifi, מדע בדיוני

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

הגדרת מילים נרדפות גלובליות באמצעות Cloud Search SDK

תוכל להשתמש ב-SDK של מחבר התוכן כדי להגדיר מונחים ואת המילים הנרדפות שלהם. ראו יצירת מחבר תוכן לקבלת הוראות לבניית מחבר.

קטע הקוד הבא מדגים את היצירה של RepositoryDoc שמייצג את המונח ואת המילה הנרדפת על סמך רשומת קובץ CSV:

DictionaryConnector.java
/**
 * Creates a document for indexing.
 *
 * For this connector sample, the created document is domain public
 *  searchable. The content is a simple text string.
 *
 * @param record The current CSV record to convert
 * @return the fully formed document ready for indexing
 */
private ApiOperation buildDocument(CSVRecord record) {
  // Extract term and synonyms from record
  String term = record.get(0);
  List<String> synonyms = StreamSupport.stream(record.spliterator(), false)
      .skip(1) // Skip term
      .collect(Collectors.toList());

  Multimap<String, Object> structuredData = ArrayListMultimap.create();
  structuredData.put("_term", term);
  structuredData.putAll("_synonym", synonyms);

  if (Configuration.getBoolean("dictionary.attachedToSearchApp", false).get()) {
    structuredData.put("_onlyApplicableForAttachedSearchApplications", true);
  }

  String itemName = String.format("dictionary/%s", term);

  // Using the SDK item builder class to create the item
  Item item =
      IndexingItemBuilder.fromConfiguration(itemName)
          .setItemType(IndexingItemBuilder.ItemType.CONTENT_ITEM)
          .setObjectType("_dictionaryEntry")
          .setValues(structuredData)
          .setAcl(DOMAIN_PUBLIC_ACL)
          .build();

  // Create the fully formed document
  return new RepositoryDoc.Builder()
      .setItem(item)
      .build();
}

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

  • ערכים נרדפים חייבים להיות ציבוריים בדומיין. בדוגמה הקודמת אפשר לעשות זאת על ידי הגדרת ה-ACL כ-DOMAIN_PUBLIC_ACL.
  • אתם לא צריכים להגדיר את המאפיינים הבאים בקובץ התצורה, כי הם מבטלים את ההגדרה הציבורית של הדומיין בקוד שלכם:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

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

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

עם זאת, נניח שלארגון שלכם יש צוותי הנדסה ומכירות נפרדים, ואתם רוצים לספק לכל צוות חוויית חיפוש שונה, כולל מילים נרדפות ספציפיות לתפקיד. במקרה כזה, תוכלו ליצור אפליקציית חיפוש אחת עם מקור נתונים ספציפי להנדסה ומילים נרדפות, ואפליקציית חיפוש אחרת עם מקור נתונים ספציפי למכירות ומילים נרדפות. כדי להשיג את היעד הזה, עליכם להוסיף לאינדקס כל מילה נרדפת במקור נתונים ספציפי באמצעות _onlyApplicableForAttachedSearchApplications=true. ההגדרה הזו מגבילה את המילים הנרדפות, כך שהן חלות רק על אפליקציות חיפוש שכוללות מקור נתונים ספציפי.

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

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);