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

سازمان‌ها اغلب اصطلاحات منحصر به فرد یا روش‌های متعددی برای اشاره به یک مفهوم دارند. تعریف مترادف‌ها، معادل‌سازی اصطلاحات را برقرار می‌کند و به کاربران کمک می‌کند تا موارد را در حین جستجو پیدا کنند.

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

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

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

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

مترادف‌ها به طور پیش‌فرض دو طرفه نیستند. یک عبارت جستجو برای "science fiction" فقط با همان عبارت دقیق مطابقت دارد، مگر اینکه آن را به عنوان یک اصطلاح با "scifi" به عنوان مترادف نیز تعریف کنید. برای اینکه اصطلاحات قابل تعویض باشند، هر یک را جداگانه تعریف کنید:

مدت مترادف‌ها
scifi science fiction
science fiction scifi

پردازش پرس‌وجو قبل از اعمال مترادف‌ها، خط فاصله و علائم نگارشی را حذف می‌کند. پرس‌وجوی "sci-fi" با عبارت "sci fi" مطابقت دارد. برای پشتیبانی از عبارات خط فاصله‌دار، _term را طوری نرمال‌سازی کنید که به جای خط فاصله از فاصله سفید استفاده کند.

مثال‌های قابل تعویض:

مدت مترادف‌ها
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

به طور پیش‌فرض، مترادف‌ها در کل دامنه و همه برنامه‌های جستجو اعمال می‌شوند. برای محدود کردن آنها، به بخش تعریف مترادف‌های خاص منبع داده مراجعه کنید.

تعریف مترادف‌های سراسری با استفاده از 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);