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

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

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

تعريف العناصر

الوحدة الأساسية للبيانات في المخطط هي الكائن، الذي يُعرف أيضًا باسم "schema object&quot، وهو بنية منطقية للبيانات. في قاعدة بيانات الأفلام، تتمثّل إحدى القواعد المنطقية للبيانات في "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: يشير إلى أنّه يمكن استخدام الخاصية لإنشاء الواجهات. يتم استخدام الواجهة لتحسين نتائج البحث حيث يرى المستخدم النتائج الأولية ثم يضيف معايير أو واجهات لتحسين تلك النتائج بشكل أكبر. لا يمكن أن يكون هذا الخيار صحيحًا للمواقع التي يكون نوعها عنصرًا، ويجب أن يكون isReturnable صحيحًا لضبط هذا الخيار. وأخيرًا، لا يتوفّر هذا الخيار إلا لخصائص enum وboolean وtext فقط. على سبيل المثال، في نموذج الرسم البياني، قد نُجري genre وactorName وuserRating وmpaaRating جدولاً سريعًا للسماح باستخدامها لتحسين نتائج البحث بشكل تفاعلي.
  • تشير العلامة isWildcardSearchable إلى أن المستخدمين يمكنهم إجراء بحث بأحرف بدل لهذا الموقع. لا يتوفّر هذا الخيار إلا على السمات النصية. وتعتمد آلية عمل بحث حرف البدل على حقل النص على القيمة المحدّدة في الحقل exactMatchWithOperator. إذا تم ضبط exactMatchWithOperator على true، سيتم ترميز القيمة النصية كقيمة واحدة بتنسيق Atom، ويتم إجراء بحث حرف بدل مقابلها. على سبيل المثال، إذا كانت القيمة النصية هي science-fiction، سيتطابق طلب بحث حرف البدل science-* معها. وإذا تم ضبط exactMatchWithOperator على false، يتم إنشاء رمز مميّز للقيمة النصية، ويتم إجراء بحث عن أحرف البدل مقابل كل رمز مميّز. على سبيل المثال، إذا كانت القيمة النصية هي "&&;;;quot- تمارين قصص الخيال العلمي",, فإن حرف البدل " sci*" أو "fi*" يطابق العنصر، ولكن "science-*" لا يتطابق معها.

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

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

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

تم ضبط isRepeatable وactorName على isRepeatable 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" },
    ...
  },
  ...
}

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

الخاصية النوع الخيارات المتعلقة بالأنواع
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"
    }
  },
  ...
}

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

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

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

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

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

على سبيل المثال، يمكنك فهرسة عناصر الكتب أو الأفلام التي تحتوي على خصائص النوع. يمكن أن تشمل الأنواع "&quot،"Science-Fiction"، و&;;;Science"&&;;Dection";. عند ضبط exactMatchWithOperator على false أو حذفه، فإنّ البحث عن نوع أو اختيار إما &"Science" أو "Fiction" الواجهة سيؤدّي أيضًا إلى عرض نتائج عن &&;;Science-Fiction"، حيث يتمّ ترميز النص وتمّ إنشاء "Science" "Fision""Sci-" عند ضبط exactMatchWithOperator على true، يتم التعامل مع النص كرمز مميّز واحد، بحيث لا يتطابق النص &"Science" ولا "Fiction"&&;;;Science-Fiction".

(اختياري) أضِف القسم displayOptions

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

يعرض المقتطف التالي السمة movieTitle مع ضبط الخاصية displayLabel على &#39؛العنوان&#39؛

{
  "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 API لفيلم واحد كما يلي:

{
  "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) التي تمنح مستخدمًا تجريبيًا فقط حتى لا يرى المستخدمون الآخرون هذه البيانات في نتائج "بحث Google".

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

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

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

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

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

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

ضبط المخطط

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

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

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

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