مترادف ها را تعریف کنید

برای یک سازمان معمول است که اصطلاحات منحصر به فرد یا روش‌های متعددی برای اشاره به یک مفهوم یا چیز داشته باشد. شما باید مترادف‌ها را تعریف کنید تا معادل اصطلاحات را ایجاد کنید و به کاربران در یافتن موارد هنگام جستجو کمک کنید.

مترادف‌ها با اندیس‌گذاری آیتم‌ها با طرحواره‌ی شناخته‌شده‌ی _dictionaryEntry تعریف می‌شوند.

اقلام از نوع _dictionaryEntry می‌توانند ویژگی‌های زیر را داشته باشند:

ملک نوع توضیحات الزامی است؟
_term string اصطلاحی برای تعریف. مقادیر توصیه‌شده، کلمات یا عبارات بدون خط تیره و بدون نقطه‌گذاری هستند. مورد نیاز
_synonym string (repeated) اصطلاحات جایگزینی که باید در پرس‌وجوهایی که با رشته تعریف‌شده در _term مطابقت دارند، گنجانده شوند. مورد نیاز
_onlyApplicableForAttachedSearchApplications boolean به شما امکان می‌دهد مترادف‌ها را بر اساس منبع داده و برنامه جستجو گروه‌بندی کنید. برای اطلاعات بیشتر، به تعریف مترادف‌های خاص منبع داده مراجعه کنید. اختیاری

وقتی کاربر مقدار ویژگی _term را در یک پرس‌وجو وارد می‌کند، پرس‌وجوی مؤثر به صورت « term OR synonyms » در می‌آید. برای مثال، اگر عبارت "scifi" با مترادف "science fiction" تعریف شود، پرس‌وجویی که حاوی کلمه "scifi" باشد، با مواردی که حاوی "scifi" یا "science fiction."

مترادف‌ها به صورت دو طرفه اعمال نمی‌شوند. اگر عبارت جستجو به جای "science fiction," جستجوی ابری هیچ مترادفی را برای عبارت جستجو اعمال نمی‌کند. عبارت جستجو فقط با مواردی که حاوی "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);