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

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

يتم تعريف المرادفات من خلال فهرسة العناصر باستخدام المخطط المعروف باسم _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();
}

يُرجى مراعاة ما يلي عند تحديد المرادفات:

  • يجب أن تكون إدخالات المرادفات علنية على مستوى النطاق. في المثال السابق، يتم تحقيق ذلك من خلال ضبط قائمة التحكّم في الوصول على DOMAIN_PUBLIC_ACL.
  • يجب عدم تحديد السمات التالية لملف الإعداد لأنها تلغي إعداد النطاق العام في الرمز البرمجي:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

تحديد المرادفات الخاصة بتطبيق البحث

يتم تطبيق المرادفات تلقائيًا على جميع مصادر البيانات في جميع تطبيقات البحث.

لنفترض أنّ مؤسستك لديها فِرق هندسة ومبيعات منفصلة، و تريد أن تقدّم لكل فريق تجربة بحث مختلفة، بما في ذلك المرادفات الخاصة بوظائفهم. في هذه الحالة، يمكنك إنشاء تطبيق بحث واحد باستخدام مصدر بيانات خاص بالهندسة ومرادفاتها وتطبيق آخر للبحث باستخدام مصدر بيانات خاص بالمبيعات ومرادفات. لتحقيق هذا الهدف، يمكنك فهرسة كل مرادف في مصدر بيانات معيّن باستخدام _onlyApplicableForAttachedSearchApplications=true. يحدّد هذا الإعداد المرادفات بحيث لا يتم تطبيقها إلا على تطبيقات البحث التي تتضمّن مصدر بيانات معيّنًا.

على سبيل المثال، إنّ إضافة السطر التالي من التعليمة البرمجية إلى عيّنة التعليمات البرمجية السابقة يضمن أن تكون المرادفات المفهرَسة خاصة بمصدر البيانات:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);