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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

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

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

إنشاء مخطط

في ما يلي قائمة بالخطوات المستخدمة لإنشاء مخطط Cloud Search:

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

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

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

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

لتحديد المخطط ليعكس أنماط سلوك المستخدم، يمكنك تنفيذ هذه المهام:

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

إعداد مصدر البيانات

يمثل مصدر البيانات البيانات من المستودع الذي تمت فهرسته وتخزينه في Google Cloud. للحصول على تعليمات حول إعداد مصدر بيانات، يُرجى الرجوع إلى إدارة مصادر بيانات الجهات الخارجية.

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

تعريف الكائنات

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

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

يعرض الشكل 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"
          }
      ...
      ]
    }
  ]
}

يتألّف تعريف الخاصية من العناصر التالية:

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

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

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

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

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

إضافة خيارات نوع المحتوى

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

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

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

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

الخاصية isReturnable isRepeatable isSortable isFacetable isWildcardSearchable
movieTitle صواب صواب
releaseDate صواب صواب
genre صواب صواب صواب
duration صواب
actorName صواب صواب صواب صواب
userRating صواب صواب
mpaaRating صواب صواب

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

تحديد النوع

يسرد القسم 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" },
    ...
  },
  ...
}

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

الخاصية النوع الخيارات المتعلقة بالنوع
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، يجب أن تتطابق سلسلة طلب البحث مع قيمة الخاصية بأكملها، ولا يمكن العثور عليها داخل النص فقط. يتم التعامل مع القيمة النصية كقيمة ذرية واحدة في عمليات البحث باستخدام عامل التشغيل ومطابقات الواجهة.

على سبيل المثال، يمكنك فهرسة كائنات الكتاب أو الأفلام ذات خصائص النوع. يمكن أن تتضمن الأنواع "Science-Fiction" و"Science" و"Science". عند ضبط السمة 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 خطأ في وقت الفهرسة.

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

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

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

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

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

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

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

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

ضبط المخطط

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

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

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

لا يتطلب تغيير أي من القيم التالية في المخطط إعادة فهرسة بياناتك. يمكنك ببساطة إرسال طلب 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. أنشئ موصِّلاً.