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

مخطّط 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 المقدَّم في طلب الفهرسة.

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

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

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

يعرض الشكل 1 عناصر الفيلم وكائنات الشخص والخصائص ذات الصلة.

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

مخطّط Cloud Search هو في الأساس قائمة تتضمّن عبارات تعريف الكائنات المحدّدة داخل العلامة objectDefinitions. يعرض مقتطف المخطط التالي عبارات objectDefinitions لعنصرَي مخطط الفيلم والشخص.

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

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

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

كما هو محدّد في مرجع ObjectDefinition، يكون اسم الكائن متبوعًا بمجموعة من options، وقائمة تضم propertyDefinitions. ويمكن أن تتألف options أيضًا من freshnessOptions و displayOptions. يتم استخدام freshnessOptions لتعديل ترتيب البحث استنادًا إلى حداثة العنصر. يتم استخدام displayOptions لتحديد ما إذا كان سيتم عرض تصنيفات وخصائص معيّنة في نتائج البحث عن عنصر معيّن.

في القسم propertyDefinitions، يمكنك تحديد خصائص عنصر ما، مثل عنوان الفيلم وتاريخ الإصدار.

يعرض المقتطف التالي العنصر movie مع سمتَين: movieTitle وreleaseDate.

{
  "objectDefinitions": [
    {
      "name": "movie",
      "propertyDefinitions": [
        {
          "name": "movieTitle",
          "isReturnable": true,
          "isWildcardSearchable": 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"
            }
          },
          "displayOptions": {
            "displayLabel": "Release date"
          }
      ...
      ]
    }
  ]
}

يتكوّن PropertyDefinition من العناصر التالية:

  • سلسلة name.
  • قائمة بخيارات تحديد النوع، مثل isReturnable في المقتطف السابق.
  • النوع والخيارات الخاصة بالنوع المرتبط به، مثل textPropertyOptions وretrievalImportance في المقتطف السابق.
  • operatorOptions يصف كيفية استخدام الخاصية كعامل تشغيل للبحث.
  • سمة displayOptions واحدة أو أكثر، مثل displayLabel في المقتطف السابق.

يجب أن تكون السمة name للسمة فريدة داخل العنصر الذي يتضمّن تلك السمة، ولكن يمكن استخدام الاسم نفسه في كائنات وكائنات فرعية أخرى. في الشكل 1، تم تحديد عنوان الفيلم وتاريخ إصداره مرتين: مرة في كائن movie ومرة أخرى في الكائن الفرعي filmography للكائن person. يُعيد هذا المخطط استخدام الحقل movieTitle بحيث يتيح المخطط استخدام نوعَين من سلوكيات البحث:

  • عرض نتائج الأفلام عندما يبحث المستخدمون عن عنوان فيلم.
  • اعرض النتائج عن الأشخاص عندما يبحث المستخدمون عن عنوان فيلم ظهر فيه أحد الممثلين.

وبالمثل، يُعيد المخطط استخدام الحقل releaseDate لأنّه يحمل المعنى نفسه لحقلَي movieTitle.

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

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

يسرد PropertyDefinition خيارات وظائف البحث العامة الشائعة في جميع المواقع بغض النظر عن نوع البيانات.

  • isReturnable: يشير إلى ما إذا كان الموقع يحدد البيانات التي يجب عرضها في نتائج البحث عبر واجهة برمجة تطبيقات طلبات البحث. جميع أمثلة خصائص الأفلام قابلة للإرجاع. يمكن استخدام الخصائص غير القابلة للإرجاع للبحث أو ترتيب النتائج بدون عرضها للمستخدم.
  • isRepeatable: تشير هذه السمة إلى ما إذا كان مسموحًا باستخدام قيم متعددة للسمة. على سبيل المثال، يكون للفيلم تاريخ إصدار واحد فقط ولكن يمكن أن يكون له ممثلون متعددون.
  • isSortable: تشير هذه السمة إلى إمكانية استخدام السمة للترتيب. لا يمكن أن يكون هذا صحيحًا بالنسبة إلى الخصائص القابلة للتكرار. على سبيل المثال، يمكن فرز نتائج الأفلام حسب تاريخ الإصدار أو تقييم الجمهور.
  • isFacetable: تشير إلى أنّه يمكن استخدام الخاصية لإنشاء facets. يتم استخدام الواجهة لتحسين نتائج البحث حيث يرى المستخدم النتائج الأولية ثم يضيف معايير أو واجهات لتحسين تلك النتائج بشكل أكبر. لا يمكن أن يكون هذا الخيار صحيحًا للمواقع التي يكون نوعها كائنًا وينبغي أن يكون isReturnable true لضبط هذا الخيار. أخيرًا، لا يتوافق هذا الخيار إلا مع خصائص التعداد والمنطقية والنصية. على سبيل المثال، في نموذج مخططنا، قد نجعل genre وactorName وuserRating وmpaaRating جدول واجهة للسماح باستخدامها لتحسين تفاعلي لنتائج البحث.
  • تشير السمة isWildcardSearchable إلى أنّه يمكن للمستخدمين إجراء بحث باستخدام أحرف البدل لهذه السمة. لا يتوفّر هذا الخيار إلا في الخصائص النصية. وتعتمد آلية عمل بحث أحرف البدل في حقل النص على القيمة المحدّدة في الحقل exactMatchWithOperator. في حال ضبط exactMatchWithOperator على true، يتم إنشاء رمز مميّز للقيمة النصية كقيمة صغيرة واحدة ويتم إجراء بحث باستخدام حرف بدل مقابلها. على سبيل المثال، إذا كانت القيمة النصية هي science-fiction، سيتطابق طلب البحث حرف البدل science-* معها. وإذا تم ضبط exactMatchWithOperator على false، سيتم إنشاء رمز مميّز للقيمة النصية ويتم إجراء بحث باستخدام حرف بدل مقابل كل رمز مميّز. على سبيل المثال، إذا كانت القيمة النصية هي "خيال علمي"، سيتطابق طلب البحث حرف البدل sci* أو fi* مع العنصر، إلا أنّ science-* لن يتطابق مع العنصر.

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

يعرض الجدول التالي المعلَمات المنطقية التي تم ضبطها على true لكل خصائص الكائن movie:

الموقع isReturnable isRepeatable isSortable isFacetable isWildcardSearchable
movieTitle صحيح صحيح
releaseDate صحيح صحيح
genre صحيح صحيح صحيح
duration صحيح
actorName صحيح صحيح صحيح صحيح
userRating صحيح صحيح
mpaaRating صحيح صحيح

تم ضبط السمة isRepeatable للسمتَين genre وactorName على true لأنّ الفيلم قد ينتمي إلى أكثر من نوع واحد ويكون عادةً لأكثر من ممثل واحد. لا يمكن فرز الخاصية إذا كانت قابلة للتكرار أو مضمنة في كائن فرعي قابل للتكرار.

تحديد النوع

يدرج قسم مرجع PropertyDefinition العديد من xxPropertyOptions حيث يكون xx نوعًا محددًا، مثل boolean. لتعيين نوع بيانات الخاصية، يجب تحديد كائن نوع البيانات المناسب. يؤدي تحديد كائن نوع البيانات لإحدى الخصائص إلى إنشاء نوع البيانات لتلك الخاصية. على سبيل المثال، يشير تحديد textPropertyOptions للسمة movieTitle إلى أنّ عنوان الفيلم من نوع النص. يعرض المقتطف التالي السمة movieTitle مع إعداد textPropertyOptions لنوع البيانات.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    ...
  },
  ...
},

قد يكون للموقع نوع بيانات مرتبط واحد فقط. على سبيل المثال، في مخطط الأفلام، يمكن أن يكون releaseDate تاريخًا فقط (على سبيل المثال، 2016-01-13) أو سلسلة (مثل، January 13, 2016)، ولكن ليس كليهما.

إليك كائنات نوع البيانات المستخدمة لتحديد أنواع البيانات للخصائص في نموذج مخطط الفيلم:

الموقع كائن نوع البيانات
movieTitle textPropertyOptions
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions
mpaaRating textPropertyOptions

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

ضبط الخيارات الخاصة بالنوع

يرتبط قسم مرجع PropertyDefinition بخيارات كل نوع. معظم الخيارات الخاصة بالنوع اختيارية، باستثناء قائمة possibleValues في enumPropertyOptions. بالإضافة إلى ذلك، يتيح لك الخيار orderedRanking ترتيب القيم بالنسبة إلى بعضها البعض. يعرض المقتطف التالي السمة movieTitle مع ضبط textPropertyOptions لنوع البيانات والخيار الخاص بالنوع retrievalImportance.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    ...
  },
  ...
}

فيما يلي الخيارات الإضافية الخاصة بالنوع المستخدمة في نموذج المخطط:

الموقع Type الخيارات الخاصة بالنوع
movieTitle textPropertyOptions retrievalImportance
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions orderedRanking، maximumValue
mpaaRating textPropertyOptions

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

بالإضافة إلى الخيارات الخاصة بالنوع، يتضمّن كل نوع مجموعة من الخيارات الاختيارية. operatorOptions توضّح هذه الخيارات كيفية استخدام الخاصية كعامل تشغيل للبحث. يعرض المقتطف التالي السمة movieTitle مع إعداد textPropertyOptions لنوع البيانات ومع الخيارَين retrievalImportance وoperatorOptions الخاصَين بالنوع.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
      "operatorName": "title"
    }
  },
  ...
}

يتضمّن كل operatorOptions عنصر operatorName، مثل title مقابل movieTitle. اسم عامل التشغيل هو عامل تشغيل البحث للموقع. عامل تشغيل البحث هو المَعلمة الفعلية التي تتوقّع أن يستخدمها المستخدمون عند تضييق نطاق البحث. على سبيل المثال، للبحث عن الأفلام بناءً على عناوينها، سيكتب المستخدم title:movieName، حيث يشير movieName إلى اسم الفيلم.

ليس من الضروري أن تكون أسماء المشغّلين هي نفسها اسم الموقع. بدلاً من ذلك، يجب عليك استخدام أسماء عوامل التشغيل التي تعكس الكلمات الأكثر شيوعًا التي يستخدمها المستخدمون في مؤسستك. على سبيل المثال، إذا كان المستخدمون يفضلون المصطلح "name" بدلاً من "title" لعنوان الفيلم، فيجب ضبط اسم عامل التشغيل على "name".

يمكنك استخدام اسم عامل التشغيل نفسه لمواقع متعددة ما دامت جميع الخصائص يتم تحليلها إلى النوع نفسه. عند استخدام اسم عامل مشترك أثناء طلب البحث، يتم استرداد جميع الخصائص التي تستخدم اسم المشغل هذا. على سبيل المثال، لنفترض أنّ كائن الفيلم يتضمّن السمتَين plotSummary وplotSynopsis، وكان لكل من هذه السمات قيمة operatorName من plot. وما دامت كلتا السمتَين عبارة عن نص (textPropertyOptions)، يستردّ طلب بحث واحد باستخدام عامل تشغيل البحث plot كلتا السمتَين.

وبالإضافة إلى operatorName، يمكن أن تحتوي السمات القابلة للترتيب على حقلَي lessThanOperatorName وgreaterThanOperatorName في operatorOptions. يمكن للمستخدمين استخدام هذه الخيارات لإنشاء طلبات بحث استنادًا إلى المقارنات مع القيمة المرسَلة.

أخيرًا، يتضمّن textOperatorOptions الحقل exactMatchWithOperator في operatorOptions. في حال ضبط السمة exactMatchWithOperator على true، يجب أن تتطابق سلسلة طلب البحث مع قيمة السمة بأكملها، وليس فقط داخل النص. يتم التعامل مع القيمة النصية كقيمة صغيرة واحدة في عمليات بحث عامل التشغيل وتطابقات الواجهة.

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

(اختياري) إضافة القسم displayOptions

يتوفّر قسم displayOptions اختياري في نهاية أي قسم propertyDefinition. يحتوي هذا القسم على سلسلة displayLabel واحدة. تمثّل السمة displayLabel تصنيفًا نصيًا سهل الاستخدام ومقترَحًا للموقع. إذا تم إعداد الموقع للعرض باستخدام ObjectDisplayOptions، سيتم عرض هذا التصنيف أمام الموقع. إذا تم إعداد السمة للعرض ولم يتم تحديد displayLabel، سيتم عرض قيمة السمة فقط.

يعرض المقتطف التالي السمة movieTitle مع ضبط displayLabel على "العنوان".

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
       "operatorName": "title"
    }
},
  "displayOptions": {
    "displayLabel": "Title"
  }
},

في ما يلي قيم displayLabel لكل خصائص الكائن movie في نموذج المخطط:

الموقع displayLabel
movieTitle Title
releaseDate Release date
genre Genre
duration Run length
actorName Actor
userRating Audience score
mpaaRating MPAA rating

(اختياري) إضافة القسم "suggestionFilteringOperators[]"

يتوفّر قسم suggestionFilteringOperators[] اختياري في نهاية أي قسم propertyDefinition. استخدم هذا القسم لتحديد خاصية مستخدمة لتصفية اقتراحات الإكمال التلقائي. على سبيل المثال، يمكنك تحديد عامل تشغيل genre لفلترة الاقتراحات استنادًا إلى نوع الفيلم المفضّل لدى المستخدم. وبعد ذلك، عندما يكتب المستخدم طلب البحث، يتم عرض الأفلام التي تتطابق مع نوعه المفضّل فقط كجزء من اقتراحات الإكمال التلقائي.

تسجيل المخطط

لعرض البيانات المنظَّمة من طلبات بحث Cloud Search، يجب تسجيل المخطط في خدمة مخططات Cloud Search. يتطلب تسجيل مخطط رقم تعريف مصدر البيانات الذي حصلت عليه أثناء خطوة إعداد مصدر البيانات.

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

كما هو موضّح بالتفصيل في الصفحة المرجعية UpdateSchema، أصدر طلب HTTP التالي لتسجيل مخططك:

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

يجب أن يحتوي نص طلبك على ما يلي:

{
  "validateOnly": // true or false,
  "schema": {
    // ... Your complete schema object ...
  }
}

استخدِم الخيار validateOnly لاختبار صلاحية مخطّطك بدون تسجيله.

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

بعد تسجيل المخطط، عليك تعبئة مصدر البيانات باستخدام طلبات الفهرس. تتم الفهرسة عادةً من خلال موصِّل المحتوى.

باستخدام مخطط الفيلم، سيظهر طلب فهرسة واجهة برمجة تطبيقات REST لفيلم واحد على النحو التالي:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "acl": {
    "readers": [
      {
        "gsuitePrincipal": {
          "gsuiteDomain": true
        }
      }
    ]
  },
  "metadata": {
    "title": "Titanic",
    "sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [
        {
          "name": "movieTitle",
          "textValues": {
            "values": [
              "Titanic"
            ]
          }
        },
        {
          "name": "releaseDate",
          "dateValues": {
            "values": [
              {
                "year": 1997,
                "month": 12,
                "day": 19
              }
            ]
          }
        },
        {
          "name": "actorName",
          "textValues": {
            "values": [
              "Leonardo DiCaprio",
              "Kate Winslet",
              "Billy Zane"
            ]
          }
        },
        {
          "name": "genre",
          "enumValues": {
            "values": [
              "Drama",
              "Action"
            ]
          }
        },
        {
          "name": "userRating",
          "integerValues": {
            "values": [
              8
            ]
          }
        },
        {
          "name": "mpaaRating",
          "textValues": {
            "values": [
              "PG-13"
            ]
          }
        },
        {
          "name": "duration",
          "textValues": {
            "values": [
              "3 h 14 min"
            ]
          }
        }
      ]
    }
  },
  "content": {
    "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
    "contentFormat": "TEXT"
  },
  "version": "01",
  "itemType": "CONTENT_ITEM"
}

لاحظ كيف تتطابق قيمة movie في الحقل objectType مع اسم تعريف الكائن في المخطط. من خلال مطابقة هاتين القيمتين، تعرف Cloud Search كائن المخطط الذي سيتم استخدامه أثناء الفهرسة.

لاحِظ أيضًا كيف تستخدم فهرسة خاصية المخطط releaseDate الخصائص الفرعية year وmonth وday التي تكتسِبها لأنّه يتم تعريفها على أنّها نوع بيانات date من خلال استخدام datePropertyOptions لتعريفها. بما أنّه لم يتم تحديد year وmonth وday في المخطط، لا يمكنك طلب البحث عن إحدى هذه السمات (مثلاً، year) بشكل فردي.

لاحظ أيضًا كيفية فهرسة السمة actorName القابلة للتكرار باستخدام قائمة من القيم.

تحديد مشاكل الفهرسة المحتملة

المشكلتان الأكثر شيوعًا في ما يتعلق بالمخططات والفهرسة هما:

  • يحتوي طلب الفهرسة على كائن مخطط أو اسم خاصية غير مسجَّل في خدمة المخطط. تؤدي هذه المشكلة إلى تجاهل الخاصية أو الكائن.

  • يحتوي طلب الفهرسة على خاصية بقيمة نوع مختلفة عن النوع المسجَّل في المخطط. تتسبب هذه المشكلة في عرض Cloud Search لخطأ في وقت الفهرسة.

اختبار المخطط باستخدام عدة أنواع من طلبات البحث

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

لإنشاء واجهة بحث للتحقّق من صحة طلبات البحث، راجِع واجهة البحث

يحتوي هذا القسم على عدة أمثلة مختلفة لطلبات البحث التي يمكنك استخدامها لاختبار مخطط فيلم.

الاختبار باستخدام طلب بحث عام

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

الاختبار مع عامل تشغيل

تؤدي إضافة عامل تشغيل إلى الاستعلام إلى تقييد النتائج بالعناصر التي تطابق قيمة عامل التشغيل هذه. على سبيل المثال، يمكنك استخدام عامل التشغيل actor للعثور على كل الأفلام التي يلعب فيها ممثل معيّن. باستخدام واجهة بحث، يمكنك تنفيذ طلب بحث عامل التشغيل هذا ببساطة عن طريق كتابة زوج Operator=value، مثل "actor:Zane"، والضغط على "actor:Zane". يجب عرض جميع الأفلام التي يكون فيها زين ممثلًا في نتائج البحث.

تحسين المخطط

بعد استخدام المخطط والبيانات الخاصة بك، استمر في مراقبة ما ينجح وما لا يعمل لدى المستخدمين. يجب مراعاة تعديل المخطط في المواقف التالية:

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

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

لا يتطلب منك تغيير أي من القيم التالية في مخططك إعادة فهرسة بياناتك. يمكنك ببساطة إرسال طلب UpdateSchema جديد، وسيستمر فهرسك في العمل:

  • أسماء عوامل التشغيل
  • القيم الدنيا والحد الأقصى للقيم الصحيحة.
  • الترتيب حسب العدد الصحيح والتعداد
  • خيارات الحداثة.
  • خيارات العرض:

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

  • إضافة أو إزالة موقع أو كائن جديد
  • تغيير isReturnable أو isFacetable أو isSortable من false إلى true

يجب ضبط السمة isFacetable أو isSortable على true فقط في حال كانت لديك حالة استخدام واضحة وحاجة إليها.

وأخيرًا، عندما تعدّل المخطط من خلال وضع علامة على السمة isSuggestable، يجب إعادة فهرسة بياناتك، ما يؤدي إلى تأخير في استخدام ميزة الإكمال التلقائي في تلك السمة.

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

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

  • نوع بيانات الموقع.
  • اسم الموقع.
  • الإعداد exactMatchWithOperator.
  • الإعداد retrievalImportance.

ومع ذلك، هناك طريقة للتغلب على هذا القيد.

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

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

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

توضّح الخطوات التالية كيفية تغيير نوع بيانات أو اسم موقع:

  1. أضِف سمة جديدة إلى تعريف العنصر في مخططك. استخدِم اسمًا مختلفًا عن الموقع الذي تريد تغييره.
  2. أصدر طلب UpdateSchema للتعريف الجديد. تذكر إرسال المخطط بأكمله، بما في ذلك كل من الخاصية الجديدة والقديمة، في الطلب.
  3. إضافة بيانات سابقة إلى الفهرس من مستودع البيانات. لإضافة بيانات الفهرس إلى الفهرس، أرسِل جميع طلبات الفهرسة باستخدام السمة الجديدة وليس الموقع القديم، لأنّ ذلك سيؤدي إلى احتساب مطابقات طلبات البحث مرتين.

    1. أثناء إعادة تعبئة الفهرسة، تحقق من الموقع الجديد واستخدم الموقع القديم تلقائيًا لتجنب السلوك غير المتسق.
    2. بعد اكتمال عملية إعادة البيانات، نفِّذ طلبات اختبار للتأكّد من صحة المعلومات.
  4. حذف الموقع القديم. يمكنك إصدار طلب UpdateSchema آخر بدون اسم الموقع القديم والتوقف عن استخدام اسم الموقع القديم في طلبات الفهرسة المستقبلية.

  5. انقل أي استخدام للموقع القديم إلى الموقع الجديد. على سبيل المثال، إذا غيّرت اسم السمة من "صانع محتوى" إلى "مؤلف"، عليك تعديل رمز طلب البحث لاستخدام اسم المؤلف حيث تمت الإشارة إليه سابقًا.

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

تعرّف على قيود الحجم

يفرض Cloud Search قيودًا على حجم كائنات البيانات المنظَّمة ومخطّطاتها. هذه الحدود هي:

  • الحد الأقصى لعدد العناصر ذات المستوى الأعلى هو 10 عناصر.
  • الحد الأقصى لعمق العرض الهرمي للبيانات المنظَّمة هو 10 مستويات.
  • يقتصر إجمالي عدد الحقول في الكائن على 1000 حقل، ويشمل ذلك عدد الحقول الأساسية بالإضافة إلى مجموع عدد الحقول في كل كائن متداخل.

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

في ما يلي بعض الخطوات التي يمكنك اتّخاذها:

  1. أنشئ واجهة بحث لاختبار مخططك.

  2. اضبط المخطّط من أجل تحسين جودة البحث.

  3. تنظيم بنية مخطط لتفسير طلبات البحث بالشكل الأمثل:

  4. تعرَّف على كيفية الاستفادة من مخطط _dictionaryEntry لتحديد مرادفات للمصطلحات الشائعة الاستخدام في شركتك. لاستخدام مخطّط _dictionaryEntry، راجِع تعريف المرادفات.

  5. أنشِئ موصِّل.