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

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

מגדירים מילים נרדפות על ידי הוספת פריטים לאינדקס באמצעות סכימת _dictionaryEntry well-known.

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

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

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

מילים נרדפות לא מוחלות באופן דו-כיווני. אם השאילתה היא במקום זאת "science fiction," Cloud Search לא מחיל מילים נרדפות על השאילתה. השאילתה מתאימה רק לפריטים שמכילים את הערך "science fiction." הפריטים שמכילים את הערך "scifi" מושמטים.

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

מונח מילים נרדפות
scifi science fiction
science fiction scifi

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

בהמשך לדוגמה, ההגדרות הבאות תואמות לשאילתות המשתמשים treat "sci-fi," "sci fi," "scifi," ו- "science fiction":

מונח מילים נרדפות
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

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

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

אפשר להשתמש ב-Content Connector 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);