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

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

تحديد أهدافك

الوحدة الأساسية للبيانات في المخطّط هي العنصر، الذي يُعرف أيضًا باسم "عنصر المخطّط "، وهو بنية منطقية للبيانات. في قاعدة بيانات الأفلام، أحد الهيكل المنطقي للبيانات هو "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 - يشير إلى ما إذا كان الموقع يحدّد البيانات التي يجب عرضها في نتائج البحث من خلال Query API. يمكن إرجاع كلّ مثال على ممتلكات الأفلام. يمكن استخدام المواقع غير القابلة للإرجاع للبحث أو ترتيب النتائج بدون عرضها على المستخدم.
  • isRepeatable: يشير إلى ما إذا كان يُسمح بقيم متعدّدة للسمة. على سبيل المثال، يكون للفيلم تاريخ إصدار واحد فقط، ولكن يمكن أن يضمّ ممثلين متعدّدين.
  • isSortable - يشير إلى أنّه يمكن استخدام السمة للترتيب. لا يمكن أن يكون هذا صحيحًا للسمات التي يمكن تكرارها. على سبيل المثال، قد يتم ترتيب نتائج الأفلام حسب تاريخ الإصدار أو تقييم الجمهور.
  • isFacetable: يشير إلى أنّه يمكن استخدام السمة لإنشاء العناصر. تُستخدَم السمة لتحسين نتائج البحث، حيث يرى المستخدِم النتائج الأولية ثم يضيف معايير أو سمات لتحسين تلك النتائج بشكلٍ أكبر. لا يمكن ضبط هذا الخيار على "صحيح" للسمات التي يكون نوعها "كائن"، ويجب ضبطisReturnable على "صحيح" لضبط هذا الخيار. أخيرًا، لا يتوفّر هذا الخيار إلا لخصائص enum وboolean والنص. على سبيل المثال، في نموذج المخطّط، يمكننا جعل سمات genre وactorName وuserRating وmpaaRating قابلة للتصفّح للسماح باستخدامها في عملية تحسين تفاعلية لنتائج البحث.
  • يشير الرمز isWildcardSearchable إلى أنّه يمكن للمستخدمين إجراء بحث باستخدام أحرف البدل في هذا الموقع. لا يتوفّر هذا الخيار إلا في المواقع النصية. تعتمد طريقة البحث باستخدام البدل في الحقل النصي على القيمة التي تم ضبطها في الحقل exactMatchWithOperator. إذا تم ضبط exactMatchWithOperator على true، تتم تجزئة القيمة النصية كقيمة أساسية واحدة ويتم تنفيذ بحث باستخدام البدل. على سبيل المثال، إذا كانت القيمة النصية هي science-fiction، يتطابق طلب البحث باستخدام العلامة النائبة science-* معها. إذا تم ضبط exactMatchWithOperator على false، يتم تقسيم قيمة النص إلى وحدات ترميز ويتم إجراء بحث باستخدام البدل في كل رمز ترويجي. على سبيل المثال، إذا كانت القيمة النصية هي "خيال علمي"، تتطابق علامة wildcard الطلبات sci* أو fi* مع العنصر، ولكن لا تتطابق science-* معه.

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

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

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

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

تحديد النوع

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

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

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

على سبيل المثال، ننصحك بفهرسة كائنات "كتاب" أو "فيلم" باستخدام سمات النوع. يمكن أن تشمل الأنواع "خيال علمي" و"علم" و "أدب خيالي". عند ضبط قيمة 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 مع اسم تعريف العنصر في المخطط. ومن خلال مطابقة هاتين القيمتَين، يعرف محرّك بحث Google Cloud عنصر المخطّط الذي يجب استخدامه أثناء الفهرسة.

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

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

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

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

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

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

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

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

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

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

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

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

الاختبار مع مشغل شبكة الجوّال

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

تعديل المخطّط

بعد استخدام المخطّط والبيانات، تابِع مراقبة الميزات التي تعمل والتي لا تعمل للمستخدمين. يجب تعديل المخطّط في الحالات التالية:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. تنظيم مخطّط لتفسير طلبات البحث على النحو الأمثل

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

  5. أنشئ موصّلاً.