تعريف المرادفات

من الشائع أن تتّبع المؤسسة مصطلحات فريدة أو طرقًا متعددة للإشارة إلى مفهوم أو عنصر معيّن. يجب تحديد المرادفات لتحديد معادلة العبارات لمساعدة المستخدمين في العثور على العناصر عند البحث.

يتم تعريف المرادفات من خلال فهرسة العناصر باستخدام المخطط المعروف باسم _dictionaryEntry.

يمكن أن تتضمّن العناصر من النوع _dictionaryEntry السمات التالية:

الموقع النوع الوصف مطلوب؟
_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

يتم تطبيق المرادفات في أيّ مصدر بيانات تلقائيًا على نطاق كامل. على وجه التحديد، يتم تطبيق المرادفات على جميع تطبيقات البحث في جميع عمليات البحث بغض النظر عن مصدر البيانات. إذا كنت تريد استخدام مرادفات خاصة بمصدر البيانات، يُرجى الرجوع إلى تحديد مرادفات خاصة بمصدر البيانات.

تحديد المرادفات الشاملة باستخدام حزمة تطوير البرامج (SDK) لـ Cloud Search

يمكنك استخدام حزمة SDK لـ Content Connector لتحديد العبارات ومرادفاتها. اطّلِع على مقالة إنشاء موصّل محتوى للحصول على تعليمات حول إنشاء موصّل.

توضِّح المقتطف التالي كيفية إنشاء ملف 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);