إنشاء مخطط وتسجيله

مخطط Google Cloud Search هو بنية JSON تحدّد الكائنات والخصائص والخيارات لفهرسة البيانات والبحث فيها. يستخدم رابط المحتوى المخطط المسجّل لتنظيم بيانات المستودع وفهرستها.

يمكنك إنشاء مخطط من خلال تقديم عنصر مخطط JSON إلى واجهة برمجة التطبيقات. يجب تسجيل مخطط لكل مستودع قبل فهرسة البيانات.

يتناول هذا المستند أساسيات إنشاء المخططات. لتحسين تجربة البحث، اطّلِع على مقالة تحسين جودة البحث.

إنشاء مخطط

اتّبِع الخطوات التالية لإنشاء مخطط Cloud Search:

  1. تحديد سلوك المستخدم المتوقّع
  2. تهيئة مصدر بيانات
  3. تحديد العناصر
  4. تحديد خصائص الكائن
  5. تسجيل المخطط
  6. فهرسة بياناتك
  7. اختبار المخطط
  8. تحسين المخطط

تحديد سلوك المستخدم المتوقّع

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

لمواءمة المخطط مع سلوك المستخدمين، اتّبِع الخطوات التالية:

  1. تقييم طلبات البحث المتنوعة من مستخدمين مختلفين
  2. تحديد مجموعات البيانات المنطقية، أو العناصر، مثل "فيلم"
  3. تحديد السمات (الخصائص) مثل العنوان أو تاريخ الإصدار
  4. تحديد القيم الصالحة للسمات، مثل "Raiders of the Lost Ark"
  5. تحديد احتياجات الترتيب والتصنيف، مثل الترتيب الزمني أو تقييمات الجمهور
  6. تحديد خصائص السياق، مثل الدور الوظيفي، لتحسين اقتراحات الإكمال التلقائي
  7. أدرِج هذه العناصر والسمات وقيم الأمثلة. استخدِم هذه القائمة من أجل تحديد خيارات عامل التشغيل.

تهيئة مصدر البيانات

يمثّل مصدر البيانات بيانات المستودع المفهرسة والمخزّنة في Google Cloud. اطّلِع على مقالة إدارة مصادر بيانات الجهات الخارجية. عندما ينقر المستخدم على نتيجة، توجّهه Cloud Search إلى العنصر باستخدام عنوان URL من طلب الفهرسة.

تحديد العناصر

الكائن هو الوحدة الأساسية للمخطط. تُعد البُنى المنطقية، مثل "فيلم" أو "شخص"، عناصر. يحتوي كل عنصر على خصائص مثل العنوان أو المدة أو الاسم.

رسم مخططات الربط بين الكيانات
الشكل 1. نموذج مخطط يتضمّن كائنَين وكائنًا فرعيًا.

المخطط هو قائمة بتعريفات العناصر في العلامة objectDefinitions.

{
  "objectDefinitions": [
    { "name": "movie" },
    { "name": "person" }
  ]
}

استخدِم أسماء فريدة لكل عنصر، مثل movie. تستخدم خدمة المخطط هذه الأسماء كمفاتيح. راجِع ObjectDefinition.

تحديد خصائص الكائن

حدِّد السمات، مثل العنوان وتاريخ الإصدار، في القسم propertyDefinitions. استخدِم options لـ freshnessOptions (الترتيب) و displayOptions (تصنيفات واجهة المستخدم).

{
  "objectDefinitions": [{
    "name": "movie",
    "propertyDefinitions": [
      {
        "name": "movieTitle",
        "isReturnable": true,
        "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": { "operatorName": "title" }
        },
        "displayOptions": { "displayLabel": "Title" }
      },
      {
        "name": "releaseDate",
        "isReturnable": true,
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "released",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

يتضمّن PropertyDefinition ما يلي:

  • سلسلة name
  • خيارات مستقلة عن النوع (مثل isReturnable).
  • نوع وخيارات خاصة بالنوع (مثلاً textPropertyOptions).
  • operatorOptions لعوامل تشغيل البحث
  • displayOptions لتصنيفات واجهة المستخدم

يمكنك إعادة استخدام أسماء السمات في عناصر مختلفة. على سبيل المثال، يمكن أن تظهر القيمة movieTitle في فيلموغرافيا كلّ من الكائن movie والكائن person.

إضافة خيارات مستقلة عن النوع

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

  • isReturnable: يتم ضبطها على true إذا كان من المفترض عرض بيانات الموقع في نتائج البحث باستخدام Query API. يمكن استخدام السمات غير القابلة للإرجاع في البحث أو الترتيب بدون ظهورها في النتائج.
  • isRepeatable: اضبط القيمة على true إذا كان بإمكان السمة أن تتضمّن قيمًا متعدّدة. على سبيل المثال، يكون للفيلم تاريخ إصدار واحد ولكن يشارك فيه عدة ممثلين.
  • isSortable: اضبط القيمة على true إذا كان يمكن استخدام السمة للترتيب. لا يمكن أن تكون القيمة true إذا كانت قيمة isRepeatable هي true أو إذا كانت السمة داخل عنصر فرعي قابل للتكرار.
  • isFacetable: اضبط القيمة على true إذا كان يمكن استخدام السمة لإنشاء فلاتر (سمات تُستخدَم لتحسين نتائج البحث).
    • يجب أن تكون قيمة isReturnable هي true.
    • لا تتوفّر إلا لخصائص التعداد المنطقي والنصية.
  • isWildcardSearchable: اضبط القيمة على true للسماح للمستخدمين بإجراء عمليات بحث باستخدام أحرف بدل في هذه السمة. لا يتوفّر هذا الخيار إلا في خصائص النصوص، ويعتمد سلوكه على إعداد exactMatchWithOperator:
    • إذا كانت exactMatchWithOperator هي true: يتم التعامل مع القيمة النصية كرمز مميز واحد. يتطابق طلب بحث مثل science-* مع القيمة science-fiction.
    • إذا كانت قيمة exactMatchWithOperator هي false: يتم تقسيم القيمة النصية إلى رموز مميزة. يتطابق طلب البحث مثل sci* أو fi* مع science-fiction، ولكن لا يتطابق مع science-*.

تحديد النوع

اضبط نوع البيانات من خلال تحديد كائن خيارات السمة المناسب (على سبيل المثال، textPropertyOptions). استخدِم التعدادات (enumPropertyOptions) إذا كنت تعرف كل القيم المحتملة. يمكن أن يحتوي الموقع على نوع بيانات واحد فقط.

تحديد خيارات عامل التشغيل

operatorOptions وصف طريقة عمل إحدى الخصائص كعامل بحث

يتطلّب كل operatorOptions operatorName (مثل title)، وهي المَعلمة التي يكتبها المستخدمون في طلبات البحث (مثلاً title:titanic). استخدِم أسماءً بديهية واعرِضها للمستخدمين.

يمكنك مشاركة operatorName بين مواقع من النوع نفسه. تسترد طلبات البحث التي تستخدم هذا الاسم نتائج من جميع المواقع المطابقة.

يمكن أن تتضمّن السمات القابلة للترتيب lessThanOperatorName وgreaterThanOperatorName لطلبات البحث الخاصة بالمقارنة. يمكن أن تستخدم خصائص النص exactMatchWithOperator للتعامل مع القيمة الكاملة كرمز مميز واحد.

إضافة خيارات العرض

يحتوي القسم الاختياري displayOptions على displayLabel. هذا التصنيف سهل الاستخدام ويظهر في نتائج البحث.

إضافة عوامل تشغيل لفلترة الاقتراحات

استخدِم suggestionFilteringOperators[] لتحديد سمة تعمل على فلترة اقتراحات الإكمال التلقائي (مثل فلترة اقتراحات الأفلام حسب النوع المفضّل لدى المستخدم). يمكنك تحديد فلتر اقتراحات واحد فقط.

تسجيل المخطط

سجِّل المخطط مع خدمة المخطط باستخدام رقم تعريف مصدر البيانات. أرسِل طلب UpdateSchema:

PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema

استخدِم validateOnly: true لاختبار المخطط بدون تسجيله.

فهرسة بياناتك

بعد التسجيل، املأ مصدر البيانات باستخدام طلبات الفهرس، وعادةً ما يتم ذلك باستخدام أداة ربط.

مثال على طلب الفهرسة:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "metadata": {
    "title": "Titanic",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [{
        "name": "movieTitle",
        "textValues": { "values": ["Titanic"] }
      }]
    }
  },
  "itemType": "CONTENT_ITEM"
}

اختبار المخطط

اختبِر باستخدام مستودع صغير قبل الإنتاج. أنشئ قائمة التحكّم بالوصول (ACL) التي تحصر النتائج على مستخدم تجريبي.

  • طلب بحث عام: البحث عن سلسلة (مثلاً، titanic")‎ للاطّلاع على جميع العناصر المطابقة.
  • طلب البحث عن عامل التشغيل: استخدِم عامل تشغيل (مثلاً، actor:Zane) لحصر النتائج.

تحسين المخطط

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

إعادة الفهرسة بعد تغيير المخطط

لست بحاجة إلى إعادة الفهرسة لإجراء تغييرات على ما يلي:

  • أسماء عوامل التشغيل
  • الحدود الرقمية
  • الترتيب حسب الأهمية
  • خيارات العرض أو الترتيب حسب الأحدث

يجب إعادة الفهرسة في الحالات التالية:

  • إضافة أو إزالة مواقع أو عناصر
  • تغيير isReturnable أو isFacetable أو isSortable إلى true
  • وضع علامة isSuggestable على مكان مخصّص للاستئجار

التغييرات غير المسموح بها على السمة

لا يُسمح بإجراء تغييرات تؤدي إلى تعطيل الفهرس أو ظهور نتائج غير متسقة، بما في ذلك:

  • نوع بيانات السمة أو اسمها
  • إعدادات exactMatchWithOperator أو retrievalImportance

إجراء تغيير معقّد على المخطط

لإجراء تغيير غير مسموح به، عليك نقل السمات من تعريف قديم إلى تعريف جديد:

  1. أضِف سمة جديدة باسم مختلف إلى المخطط.
  2. سجِّل المخطط بكل من السمات الجديدة والقديمة.
  3. املأ الفهرس بالبيانات السابقة باستخدام السمة الجديدة فقط.
  4. احذف الموقع القديم من المخطط.
  5. عدِّل رمز طلب البحث لاستخدام اسم الموقع الجديد.

تسجّل Cloud Search العناصر المحذوفة لمدة 30 يومًا لمنع حدوث مشاكل في إعادة الاستخدام.

القيود المفروضة على الحجم

  • يمكنك إضافة 10 عناصر كحدّ أقصى في المستوى الأعلى.
  • الحدّ الأقصى للعمق هو 10 مستويات.
  • يمكن إضافة 1,000 حقل كحد أقصى لكل عنصر (بما في ذلك الحقول المتداخلة).

الخطوات التالية

  1. أنشئ واجهة بحث.
  2. تحسين جودة البحث:
  3. تنظيم مخطط لتحقيق التفسير الأمثل لطلبات البحث
  4. تحديد المرادفات