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

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

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

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

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

כשמשתמש כולל בשאילתה את הערך של המאפיין _term, השאילתה האפקטיבית הופכת ל "מונח או מילים נרדפות". לדוגמה, אם המונח "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 כך שישתמש ברווח לבן במקום במקפים.

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