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

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

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

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

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

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

תוכל להשתמש ב-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);