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

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

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

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

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

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

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

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

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

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

בהמשך לדוגמה, ההגדרות הבאות תואמות לשאילתות המשתמשים שמתייחסות ל-"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 שמייצג את המונח והת synonym על סמך רשומה בקובץ 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);