موصّل المحتوى هو برنامج برمجي يُستخدَم للتنقّل في البيانات في مستودع المؤسسة وملء مصدر بيانات. توفّر Google الخيارين التاليين لتطوير أدوات ربط المحتوى:
حزمة تطوير البرامج (SDK) الخاصة بخدمة "موصّل المحتوى" يُعدّ هذا الخيار مناسبًا إذا كنت تبرمج باستخدام Java. حزمة SDK لـ Content Connector هي حزمة برمجية خارجية حول واجهة برمجة التطبيقات REST API تتيح لك إنشاء أدوات ربط بسرعة. لإنشاء توصيلة محتوى باستخدام حزمة SDK، يُرجى الرجوع إلى مقالة إنشاء توصيلة محتوى باستخدام حزمة SDK لتوصيلة المحتوى.
مكتبات واجهة برمجة تطبيقات أو واجهة برمجة تطبيقات REST من المستوى المنخفض استخدِم هذين الخيارَين إذا لم تكن تبرمج باستخدام Java، أو إذا كانت قاعدة بياناتك تتلاءم بشكل أفضل مع واجهة برمجة تطبيقات REST أو مكتبة. لإنشاء موصّل محتوى باستخدام واجهة برمجة التطبيقات REST API، يُرجى الرجوع إلى مقالة إنشاء موصّل محتوى باستخدام واجهة برمجة التطبيقات REST API.
ينفِّذ محوِّل المحتوى النموذجي المهام التالية:
- تقرأ مَعلمات الضبط وتعالجها.
- سحب أجزاء منفصلة من البيانات القابلة للفهرسة، والتي تُعرف باسم "العناصر"، من مستودع المحتوى التابع لجهة خارجية
- يجمع بين جداول التحكم في الوصول والبيانات الوصفية وبيانات المحتوى في عناصر قابلة للفهرسة.
- فهرسة العناصر في مصدر بيانات Cloud Search
- (اختياري) الاستماع إلى إشعارات التغيير من مستودع المحتوى التابع لجهة خارجية يتم تحويل إشعارات التغييرات إلى طلبات فهرسة للحفاظ على مزامنة مصدر بيانات Cloud Search مع المستودع التابع لجهة خارجية. لا ينفِّذ الموصِّل هذه المهمة إلا إذا كان المستودع يتيح رصد التغييرات.
إنشاء موصِّل محتوى باستخدام حزمة تطوير البرامج (SDK) لـ Content Connector
توضّح الأقسام التالية كيفية إنشاء أداة ربط محتوى باستخدام IDE لـ Content Connector.
إعداد التبعيات
يجب تضمين ملحقَين معيّنين في ملف الإنشاء لاستخدام حزمة SDK. انقر على علامة تبويب أدناه لعرض التبعيات لبيئة الإصدار:
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-indexing-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Gradle
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-indexing-connector-sdk',
version: 'v1-0.0.3'
إنشاء إعدادات الموصّل
يحتوي كلّ موصِّل على ملفّ إعدادات يحتوي على مَعلمات يستخدمها
الموصِّل، مثل رقم تعريف المستودع. يتم تعريف المَعلمات على أنّها أزواج مفتاح/قيمة، مثل
api.sourceId=1234567890abcdef
.
يحتوي حِزم تطوير البرامج (SDK) من Google Cloud Search على عدة مَعلمات إعدادات توفّرها Google ويستخدمها جميع الموصِّلات. يجب الإفصاح عن المَعلمات التالية التي تقدّمها Google في ملف الإعدادات:
- بالنسبة إلى مُوصِّل المحتوى، يجب الإفصاح عن
api.sourceId
وapi.serviceAccountPrivateKeyFile
لأنّ هاتين المَعلمتَين تحدّدان الموقع الجغرافي للمستودع والمفتاح الخاص اللازمَين للوصول إلى المستودع.
- بالنسبة إلى أداة ربط الهوية، يجب تحديد
api.identitySourceId
لأنّ هذه القيمة تحدد الموقع الجغرافي لمصدر الهوية الخارجي. إذا كنت تتمكّن من مزامنة المستخدمين، عليك أيضًا الإفصاح عنapi.customerId
كرقم التعريف الفريد لحساب مؤسستك على Google Workspace.
ما لم تكن تريد إلغاء القيم التلقائية للمَعلمات الأخرى التي تقدّمها Google، ليس عليك الإفصاح عنها في ملف الإعداد. للحصول على معلومات إضافية عن مَعلمات الضبط التي تقدّمها Google، مثل كيفية إنشاء أرقام تعريف ومفاتيح معيّنة، يُرجى الرجوع إلى مَعلمات الضبط التي تقدّمها Google.
يمكنك أيضًا تحديد المَعلمات الخاصة بالمستودع لاستخدامها فيملف الإعدادات.
تمرير ملف الضبط إلى الموصِّل
اضبط سمة النظام config
لتمرير ملف الضبط إلى
الموصِّل. يمكنك ضبط السمة باستخدام الوسيطة -D
عند بدء
الموصّل. على سبيل المثال، يبدأ الأمر التالي الموصِّل
باستخدام ملف الضبط MyConfig.properties
:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
إذا لم تكن هذه الوسيطة متوفّرة، يحاول حِزم تطوير البرامج (SDK) الوصول إلى ملف إعدادات default
بعنوان connector-config.properties
.
تحديد استراتيجية التنقّل
تتمثّل الوظيفة الأساسية لموصّل المحتوى في التنقّل في مستودع و فهرسة بياناته. يجب تنفيذ استراتيجية تنقّل استنادًا إلى حجم البيانات وتنسيقها في مستودعك. يمكنك تصميم استراتيجيتك الخاصة أو الاختيار من الاستراتيجيات التالية التي تم تنفيذها في حزمة SDK:
- استراتيجية التنقّل الكامل
تبحث استراتيجية التنقّل الكاملة في المستودع بأكمله وتُفهرس كل عنصر بشكل عشوائي. تُستخدَم هذه الاستراتيجية عادةً عندما يكون لديك مستودع صغير ويمكنك تحمل النفقات العامة لإجراء جولة كاملة في كل مرة تُجري فيها الفهرسة.
إنّ استراتيجية التنقّل هذه مناسبة للمستودعات الصغيرة التي تحتوي على بيانات static وغير هرمية في الغالب. يمكنك أيضًا استخدام استراتيجية التنقّل هذه عندما يكون من الصعب رصد التغييرات أو عندما لا يتيح المستودع ذلك.
- استراتيجية تنقّل القائمة
تبحث استراتيجية تنقّل القائمة في المستودع بأكمله، بما في ذلك كلّ العناصر الفرعية، لتحديد حالة كلّ عنصر. بعد ذلك، يُجري الموصِّل جولة ثانية ويُفهرس فقط العناصر الجديدة أو التي تم تعديلها منذ عملية الفهرسة الأخيرة. تُستخدَم هذه الاستراتيجية عادةً لإجراء تعديلات تصاعدية على فهرس حالي (بدلاً من إجراء تنقّل كامل في كل مرّة تعدّل فيها الفهرس).
تكون استراتيجية التنقّل هذه مناسبة عندما يكون رصد التغييرات صعبًا أو لا يتيحه المستودع، أو إذا كانت لديك بيانات غير هرمية، أو إذا كنت تعمل مع مجموعات بيانات كبيرة جدًا.
- التنقّل في الرسم البياني
تبحث استراتيجية التنقّل في الرسم البياني في العقدة الرئيسية بالكامل لتحديد حالة كل عنصر. بعد ذلك، يُجري الموصِّل جولة ثانية ولا يفهرس سوى العناصر الجديدة في العقدة الجذر أو التي تم تعديلها منذ آخر عملية فهرسة. أخيرًا، يُرسِل الموصّل أي أرقام تعريف فرعية، ثمّ يُفهرس العناصر في العقد الفرعية التي تكون جديدة أو تم تعديلها. يواصل الموصّل المعالجة بشكلٍ متكرّر من خلال جميع العقد الفرعية إلى أن يتمّ معالجة جميع العناصر. وعادةً ما يتم استخدام هذا التنقّل للمستودعات التدرّجية حيث لا يكون إدراج جميع الأرقام التعريفية عمليًا.
تكون هذه الاستراتيجية مناسبة إذا كانت لديك بيانات هرمية يجب crawled، مثل سلسلة من الأدلة أو صفحات الويب.
يتم تنفيذ كل استراتيجية من استراتيجيات التنقّل هذه من خلال فئة مقبّل ربط نماذج في حزمة تطوير البرامج (SDK). على الرغم من أنّه يمكنك تنفيذ استراتيجية التنقّل الخاصة بك، إلا أنّ هذه النماذج تسرِّع بشكل كبير تطوير الموصّل. ل إنشاء موصّل باستخدام نموذج، انتقِل إلى القسم المقابل لاستراتيجية التنقّل:
- إنشاء موصِّل تنقّل كامل باستخدام فئة نموذج
- إنشاء موصّل لتصفّح القائمة باستخدام فئة نموذج
- إنشاء موصّل لعبور الرسم البياني باستخدام فئة نموذج
إنشاء موصّل تنقّل كامل باستخدام فئة نموذج
يشير هذا القسم من المستندات إلى مقتطفات رمز من مثال FullTraversalSample.
تنفيذ نقطة دخول الموصِّل
نقطة الدخول إلى الموصّل هي main()
. تتمثل المهمة الأساسية لهذه الطريقة في إنشاء مثيل لفئة
Application
وتشغيل أسلوب
start()
لتشغيل الموصّل.
قبل استدعاء
application.start()
،
استخدِم فئة
IndexingApplication.Builder
لإنشاء مثيل لنموذج
FullTraversalConnector
. تقبل دالة
FullTraversalConnector
كائنًا من نوع
Repository
، وتكون طُرقه هي التي تنفّذها. يوضّح مقتطف الرمز البرمجي التالي كيفية
تنفيذ الطريقة main()
:
من وراء الكواليس، تستدعي حزمة تطوير البرامج (SDK) الأسلوب
initConfig()
بعد أن تستدعي طريقة main()
في أداة الربط
Application.build
.
تؤدي الطريقة
initConfig()
المهام التالية:
- تستدعي الوسيطة
Configuation.isInitialized()
للتأكّد من عدم بدء معالجةConfiguration
. - يبدأ عنصر
Configuration
باستخدام أزواج ملفّات تعريف الارتباط التي تقدّمها Google. يتم تخزين كل زوج مفتاح/قيمة في عنصرConfigValue
ضمن عنصرConfiguration
.
تنفيذ واجهة Repository
الغرض الوحيد من عنصر Repository
هو تنفيذ عملية التنقّل في عناصر المستودع و
فهرستها. عند استخدام
نموذج، ما عليك سوى إلغاء طرق معيّنة ضمن Repository
واجهة لإنشاء رابط محتوى. تعتمد الطرق التي تلغيها على
النموذج واستراتيجية التنقّل التي تستخدمها. بالنسبة إلى
FullTraversalConnector
، يمكنك إلغاء الطرق التالية:
الطريقة
init()
لإجراء أي عملية إعداد وبدء لمستودع البيانات، يمكنك إلغاء طريقةinit()
.الطريقة
getAllDocs()
للتنقّل في جميع العناصر في مستودع البيانات وفهرستها، يمكنك إلغاء طريقةgetAllDocs()
. يتمّ استدعاء هذه الطريقة مرّة واحدة لكلّ تنقّل مجدوَل (على النحو المحدّد في الإعدادات).(اختياري) أسلوب
getChanges()
إذا كان المستودع يتيح رصد التغييرات، يمكنك إلغاء طريقةgetChanges()
. يتمّ استدعاء هذه الطريقة مرّة واحدة لكلّ عملية اجتياز تصاعدي مجدوَلة (على النحو المحدّد في الإعدادات) لاسترداد العناصر المعدّلة و index index.(اختياري) أسلوب
close()
إذا كنت بحاجة إلى إجراء عملية تنظيف للمستودع، يمكنك إلغاء طريقةclose()
. يتمّ استدعاء هذه الطريقة مرّة واحدة أثناء إيقاف الموصّل.
تُعيد كل طريقة من طرق كائن
Repository
نوعًا من كائن
ApiOperation
. ينفِّذ عنصر ApiOperation
إجراءً في شكل مكالمة واحدة أو
ربما متعددة من IndexingService.indexItem()
لتنفيذ الفهرسة الفعلية لمستودعك.
الحصول على مَعلمات الإعداد المخصّصة
كجزء من التعامل مع إعدادات الموصّل، عليك الحصول على أي
مَعلمات مخصّصة من كائن
Configuration
. يتم تنفيذ هذه المهمة عادةً في أسلوب
Repository
class's
init()
.
تحتوي فئة Configuration
على عدة طرق للحصول على أنواع بيانات مختلفة
من إحدى الإعدادات. تُعرِض كل طريقة كائن ConfigValue
. بعد ذلك، عليك
استخدام ConfigValue
get()
طريقة العنصر لاسترداد القيمة الفعلية.
يوضّح المقتطف التالي، من
FullTraversalSample
،
كيفية استرداد قيمة عددية مخصّصة واحدة من عنصر Configuration
:
للحصول على مَعلمة تحتوي على عدة قيم وتحليلها، استخدِم أحد أدوات تحليل أنواع فئة
Configuration
لتحليل البيانات إلى أجزاء منفصلة.
تستخدم المقتطف التالي من الدليل التعليمي للموصّل الطريقة
getMultiValue
للحصول على قائمة بأسماء مستودعات GitHub:
إجراء تنقّل كامل
يمكنك إلغاء مفعول getAllDocs()
لإجراء تنقّل كامل وفهرسة مستودعك. تقبل طريقة getAllDocs()
نقطة تفتيش. يتم استخدام نقطة التفتيش لاستئناف الفهرسة عند
عنصر معيّن في حال انقطاع العملية. لكل عنصر في
مستودعك، نفِّذ الخطوات التالية في getAllDocs()
الطريقة:
- ضبط الأذونات
- اضبط البيانات الوصفية للعنصر الذي تُفهرسه.
- دمج البيانات الوصفية والعنصر في ملف واحد قابل للفهرسة
RepositoryDoc
- احرِص على تجميع كل عنصر قابل للفهرسة في عنصر تكرار يعرضه الأسلوب
getAllDocs()
. يُرجى العِلم أنّgetAllDocs()
يعرض في الواقع ملفًا بتنسيقCheckpointCloseableIterable
وهو عبارة عن تكرار لكائناتApiOperation
، ويمثّل كل عنصر طلبًا لـ API يتم تنفيذه على ملفRepositoryDoc
، مثل فهرسته.
إذا كانت مجموعة العناصر كبيرة جدًا بحيث يتعذّر معالجتها في طلب واحد، أدرِج نقطة تفتيش وضبط
hasMore(true)
للإشارة إلى توفّر المزيد من العناصر للفهرسة.
ضبط الأذونات لعنصر
يستخدم مستودعك قائمة التحكّم بالوصول (ACL) لتحديد المستخدمين أو المجموعات التي يمكنها الوصول إلى عنصر معيّن. قائمة التحكّم في الوصول هي قائمة بأرقام تعريف المجموعات أو المستخدمين الذين يمكنهم الوصول إلى العنصر.
يجب تكرار قائمة التحكّم بالوصول (ACL) التي يستخدمها مستودعك لضمان أنّ المستخدمين الذين يمكنهم الوصول إلى عنصر معيّن فقط هم من يمكنهم الاطّلاع على هذا العنصر ضمن نتيجة بحث. يجب تضمين جدول تدابير تحكم الوصول (ACL) الخاص بالعنصر عند فهرسته حتى يتوفّر لدى Google Cloud Search المعلومات التي يحتاجها لتوفير المستوى الصحيح من الوصول إلى العنصر.
توفّر حزمة Content Connector SDK مجموعة غنية من فئات جداول التحكم في الوصول (ACL) والأساليب لمحاولة محاكاة جداول التحكم في الوصول لمعظم المستودعات. عليك تحليل قائمة التحكّم بالوصول لكل عنصر في مستودعك وإنشاء قائمة تحكّم بالوصول مقابلة لخدمة Google Cloud Search عند فهرسة عنصر. إذا كان جدول أذونات الوصول إلى المستودع يستخدم مفاهيم مثل اكتساب أذونات الوصول، قد يكون من الصعب وضع نموذج له. لمزيد من المعلومات عن جداول التحكم في الوصول في Google Cloud Search، يُرجى الرجوع إلى مقالة جداول التحكم في الوصول في Google Cloud Search.
ملاحظة: تتيح واجهة برمجة التطبيقات Cloud Search Indexing API قوائم التحكّم بالوصول إلى نطاق واحد. ولا يسمح
بقوائم التحكّم بالوصول على مستوى النطاقات المختلفة. استخدِم فئة
Acl.Builder
لضبط أذونات الوصول إلى كل عنصر باستخدام قائمة أذونات وصول. إنّ مقتطف الرمز البرمجي التالي، المأخوذ
من نموذج التنقّل الكامل، يسمح
لجميع المستخدمين أو "المشرفين"
(getCustomerPrincipal()
)
بأن يكونوا "قارئين" لجميع العناصر
(.setReaders()
)
عند إجراء بحث.
عليك فهم قوائم التحكّم بالوصول لتصميمها بشكل صحيح في المستودع. على سبيل المثال، قد تتم فهرسة الملفات ضمن نظام ملفات يستخدم نوعًا من نماذج اكتساب الأذونات التي تكتسب فيها المجلدات الفرعية الأذونات من المجلدات الرئيسية. تتطلّب عملية وضع نماذج لميزة اكتساب أذونات الوصول إلى البيانات معلومات إضافية مُغطّاة في أذونات الوصول إلى البيانات في Google Cloud Search.
ضبط البيانات الوصفية لعنصر
يتم تخزين البيانات الوصفية في عنصر Item
. لإنشاء Item
، تحتاج إلى
حدّ أدنى من معرّف سلسلة فريد ونوع العنصر وقائمة التحكّم بالوصول وعنوان URL والإصدار الخاص بالعنصر.
يوضّح مقتطف الرمز التالي كيفية إنشاء Item
باستخدام فئة المساعدة
IndexingItemBuilder
.
أنشئ العنصر القابل للفهرسة.
بعد ضبط البيانات الوصفية للعنصر، يمكنك إنشاء العنصر القابل للفهرسة باستخدام فئة
RepositoryDoc.Builder
. يوضّح المثال التالي كيفية إنشاء عنصر واحد قابل للفهرسة.
RepositoryDoc
هو نوع من ApiOperation
الذي ينفِّذ طلب
IndexingService.indexItem()
الفعلي.
يمكنك أيضًا استخدام الأسلوب
setRequestMode()
لفئة
RepositoryDoc.Builder
لتحديد طلب الفهرسة على أنّه ASYNCHRONOUS
أو SYNCHRONOUS
:
ASYNCHRONOUS
- يؤدي الوضع غير المتزامن إلى زيادة وقت الاستجابة من الفهرسة إلى العرض، ويسمح بزيادة حصة معدل نقل البيانات لطلبات الفهرسة. ننصح باستخدام الوضع غير المتزامن للفهرسة الأولية (إعادة تعبئة) للمستودع بأكمله.
SYNCHRONOUS
- يؤدي الوضع المتزامن إلى تقليل وقت الاستجابة من الفهرسة إلى العرض ويسمح
باستخدام حصة محدودة من معدل نقل البيانات. ننصح باستخدام الوضع المتزامن
لفهرسة التعديلات والتغييرات التي يتم إجراؤها على المستودع. إذا
لم يتم تحديده، سيتم ضبط وضع الطلب تلقائيًا على
SYNCHRONOUS
.
تجميع كل عنصر قابل للفهرسة في أداة تكرار
تُرجِع الطريقة getAllDocs()
Iterator
، وتحديدًا CheckpointCloseableIterable
،
من كائنات
RepositoryDoc
. يمكنك استخدام فئة
CheckpointClosableIterableImpl.Builder
لإنشاء مكرّر وإرجاعه. يوضّح المقتطف التالي من الرمز البرمجي كيفية
إنشاء مكرّر وإرجاعه.
تنفِّذ حزمة تطوير البرامج كلّ طلب فهرسة مُدرَج ضمن الموسّع.
الخطوات التالية
في ما يلي بعض الخطوات التالية التي يمكنك اتّخاذها:
- (اختياري) إذا كانت سرعة الفهرسة تبدو بطيئة، يمكنك الرجوع إلى مقالة زيادة معدّل الفهرسة في
FullTraversalConnector
. - (اختياري) نفِّذ طريقة
close()
لتحرير أي موارد قبل إيقاف الخدمة. - (اختياري) أنشئ موصِّل هوية باستخدام حزمة Content Connector SDK.
إنشاء موصّل لتنقّل القائمة باستخدام فئة نموذج
تُستخدَم "قائمة انتظار فهرسة Cloud Search" لتخزين المعرّفات وقيمة التجزئة الاختيارية لكل عنصر في المستودع. يُرسِل موصِّل التنقّل في القائمة معرفات العناصر إلى "قائمة الانتظار للفهرسة" في Google Cloud Search ويستردّها واحدًا تلو الآخر للفهرسة. تحافظ خدمة Google Cloud Search على قوائم الانتظار ومقارنة محتويات القوائم لتحديد حالة العنصر، مثل ما إذا تم حذف عنصر من المستودع. لمزيد من المعلومات عن "قائمة انتظار الفهرسة" في Cloud Search، يُرجى الاطّلاع على مقالة قائمة انتظار الفهرسة في Cloud Search.
يشير هذا القسم من المستندات إلى مقتطفات رمز من المثال ListTraversalSample.
تنفيذ نقطة دخول الموصِّل
نقطة الدخول إلى الموصّل هي main()
. تتمثل المهمة الأساسية لهذه الطريقة في إنشاء مثيل لفئة
Application
وتشغيل أسلوب
start()
لتشغيل الموصّل.
قبل استدعاء
application.start()
،
استخدِم فئة
IndexingApplication.Builder
لإنشاء مثيل لنموذج
ListingConnector
. تقبل السمة ListingConnector
ملفًا شخصيًا
Repository
يتم تنفيذ طرقه. يوضّح المقتطف التالي كيفية
إنشاء مثيل للعنصر ListingConnector
والعنصر Repository
المرتبط به:
من وراء الكواليس، تستدعي حزمة تطوير البرامج (SDK) الأسلوب
initConfig()
بعد أن تستدعي طريقة main()
في أداة الربط
Application.build
.
طريقة initConfig()
:
- تستدعي الوسيطة
Configuation.isInitialized()
للتأكّد من عدم بدء معالجةConfiguration
. - يبدأ عنصر
Configuration
باستخدام أزواج ملفّات تعريف الارتباط التي تقدّمها Google. يتم تخزين كل زوج مفتاح/قيمة في عنصرConfigValue
ضمن عنصرConfiguration
.
تنفيذ واجهة Repository
الغرض الوحيد من عنصر Repository
هو تنفيذ عملية التنقّل في عناصر المستودع و
فهرستها. عند استخدام نموذج، ما عليك سوى إلغاء
طُرق معيّنة ضمن واجهةRepository
لإنشاء رابط محتوى.
تعتمد الطرق التي تلغيها على النموذج واستراتيجية التنقّل التي تستخدمها. بالنسبة إلى
ListingConnector
،
يمكنك إلغاء الطرق التالية:
الطريقة
init()
لإجراء أي عملية إعداد وبدء لمستودع البيانات، يمكنك إلغاء طريقةinit()
.طريقة
getIds()
لاسترداد أرقام التعريف وقيم التجزئة لجميع السجلّات في المستودع، استبدِل طريقةgetIds()
.طريقة
getDoc()
لإضافة عناصر جديدة أو تعديلها أو حذفها من الفهرس، يمكنك إلغاء طريقةgetDoc()
.(اختياري) أسلوب
getChanges()
إذا كان المستودع يتيح رصد التغييرات، يمكنك إلغاء طريقةgetChanges()
. يتمّ استدعاء هذه الطريقة مرّة واحدة لكلّ عملية اجتياز تصاعدي مجدوَلة (على النحو المحدّد في الإعدادات) لاسترداد العناصر المعدّلة و index index.(اختياري) أسلوب
close()
إذا كنت بحاجة إلى إجراء عملية تنظيف للمستودع، يمكنك إلغاء طريقةclose()
. يتمّ استدعاء هذه الطريقة مرّة واحدة أثناء إيقاف الموصّل.
تُعيد كل طريقة من طرق عنصر Repository
نوعًا من
كائن ApiOperation
. ينفِّذ عنصر ApiOperation
إجراءً في شكل مكالمة واحدة أو
ربما متعددة من IndexingService.indexItem()
لتنفيذ الفهرسة الفعلية لمستودعك.
الحصول على مَعلمات الإعداد المخصّصة
كجزء من التعامل مع إعدادات الموصّل، عليك الحصول على أي
مَعلمات مخصّصة من كائن
Configuration
. يتم تنفيذ هذه المهمة عادةً في أسلوب
Repository
class's
init()
.
تحتوي فئة Configuration
على عدة طرق للحصول على أنواع بيانات مختلفة
من إحدى الإعدادات. تُعرِض كل طريقة كائن ConfigValue
. بعد ذلك، عليك
استخدام ConfigValue
get()
طريقة العنصر لاسترداد القيمة الفعلية.
يوضّح المقتطف التالي، من
FullTraversalSample
،
كيفية استرداد قيمة عددية مخصّصة واحدة من عنصر Configuration
:
للحصول على مَعلمة تحتوي على عدة قيم وتحليلها، استخدِم أحد أدوات تحليل أنواع فئة
Configuration
لتحليل البيانات إلى أجزاء منفصلة.
تستخدم المقتطف التالي من الدليل التعليمي للموصّل الطريقة
getMultiValue
للحصول على قائمة بأسماء مستودعات GitHub:
تنفيذ تنقّل القائمة
يمكنك إلغاء مفعول getIds()
الطريقة لاسترداد أرقام التعريف وقيم التجزئة لجميع السجلّات في المستودع.
تقبل طريقة getIds()
نقطة تفتيش. تُستخدَم نقطة التفتيش لاستئناف index
في عنصر معيّن في حال انقطاع العملية.
بعد ذلك، يمكنك إلغاء طريقة
getDoc()
لمعالجة كل عنصر في "قائمة انتظار فهرسة Cloud Search".
دفع معرّفات السلع وقيم التجزئة
يمكنك إلغاء الإعدادات التلقائية
getIds()
لاسترداد أرقام تعريف السلع وقيم تجزئة المحتوى المرتبطة بها من
المستودع. بعد ذلك، يتم تجميع أزواج رقم التعريف وقيمة التجزئة في عملية دفع
طلب إلى "قائمة انتظار فهرسة Cloud Search". عادةً ما يتم أولاً إرسال معرّفات الجذر أو العناصر الرئيسية، ثم معرّفات العناصر الفرعية إلى أن تتم معالجة التسلسل الهرمي الكامل للعناصر.
تقبل الطريقة getIds()
نقطة تفتيش تمثّل العنصر الأخير الذي سيتم
فهرسته. يمكن استخدام نقطة التفتيش لاستئناف الفهرسة عند عنصر معيّن في حال تعطّل العملية. بالنسبة إلى كل عنصر في مستودعك، نفِّذ الخطوات التالية في getIds()
:
- الحصول على كل معرّف سلعة وقيمة التجزئة المرتبطة به من المستودع
- احرِص على تجميع كل زوج من رقم التعريف وقيمة التجزئة في
PushItems
. - اجمع كل
PushItems
في أداة تكرار يعرضها الأسلوبgetIds()
. يُرجى العلم أنّgetIds()
يعرض في الواقع ملفًا بتنسيقCheckpointCloseableIterable
وهو عبارة عن تكرار لعناصرApiOperation
، ويمثّل كل عنصر طلبًا من واجهة برمجة التطبيقات يتم تنفيذه على ملفRepositoryDoc
، مثل دفع العناصر إلى "القائمة الانتظار".
يوضّح المقتطف التالي من الرمز كيفية الحصول على كل معرّف عنصر وقيمة التجزئة
وإدراجها في
PushItems
.
PushItems
هو طلب ApiOperation
لإرسال عنصر إلى "قائمة انتظار الفهرسة" في Cloud Search.
يوضّح مقتطف الرمز التالي كيفية استخدام فئة
PushItems.Builder
لحزمة أرقام التعريف وقيم التجزئة في دفعة واحدة
ApiOperation
.
يتم دفع العناصر إلى "قائمة انتظار فهرسة Cloud Search" لإجراء المزيد من المعالجة.
استرداد كل عنصر ومعالجته
يمكنك إلغاء
getDoc()
لمعالجة كل عنصر في "قائمة انتظار فهرسة Cloud Search".
يمكن أن يكون العنصر جديدًا أو معدَّلاً أو لم يعد متوفّرًا في مستودع
المصدر. استرداد كل عنصر جديد أو معدَّل وفهرسته أزِل العناصر
من الفهرس التي لم تعُد متوفّرة في مستودع المصدر.
تقبل الطريقة getDoc()
عنصرًا من "قائمة الفهرسة" في Google Cloud Search. لكل عنصر في "القائمة الانتظار"، نفِّذ الخطوات التالية في الطريقة
getDoc()
:
تحقَّق مما إذا كان معرّف السلعة ضمن "قائمة انتظار فهرسة Cloud Search" متوفّرًا في المستودع. وإذا لم يكن الأمر كذلك، يمكنك حذف العنصر من الفهرس.
اطّلِع على الفهرس لمعرفة حالة العنصر، وإذا لم يتغيّر العنصر (
ACCEPTED
)، لا تُنفِّذ أي إجراء.المؤشر الذي تم تغييره أو العناصر الجديدة:
- حدِّد الأذونات.
- اضبط البيانات الوصفية للعنصر الذي تُفهرسه.
- دمج البيانات الوصفية والعنصر في ملف واحد قابل للفهرسة
RepositoryDoc
- أعِد
RepositoryDoc
.
ملاحظة: لا يتيح نموذج ListingConnector
عرض null
في
طريقة getDoc()
. يؤدي إرجاع null
إلى NullPointerException.
التعامل مع العناصر المحذوفة
يوضّح المقتطف البرمجي التالي كيفية تحديد ما إذا كان هناك عنصر في الادراج ، وإذا لم يكن الأمر كذلك، حذفه.
يُرجى العِلم أنّ documents
هي بنية بيانات تمثّل المستودع. إذا لم يتم العثور على
documentID
في documents
، أعِد استخدام
APIOperations.deleteItem(resourceName)
لحذف العنصر من الفهرس.
التعامل مع العناصر التي لم تتغيّر
يوضِّح المقتطف التالي من الرمز كيفية فحص حالة العنصر في "قائمة الفهرسة" في Cloud Search ومعالجة عنصر لم يتغيّر.
لتحديد ما إذا كان العنصر لم يتم تعديله، تحقّق من حالة العنصر بالإضافة إلى البيانات الوصفية الأخرى التي قد تشير إلى حدوث تغيير. في المثال، يتم استخدام التجزئة للبيانات الوصفية لتحديد ما إذا تم تغيير العنصر.
ضبط الأذونات لعنصر
يستخدم مستودعك قائمة التحكّم بالوصول (ACL) لتحديد المستخدمين أو المجموعات التي يمكنها الوصول إلى عنصر معيّن. قائمة التحكّم في الوصول هي قائمة بأرقام تعريف المجموعات أو المستخدمين الذين يمكنهم الوصول إلى العنصر.
يجب تكرار قائمة التحكّم بالوصول (ACL) التي يستخدمها مستودعك لضمان أنّ المستخدمين الذين يمكنهم الوصول إلى عنصر معيّن فقط هم من يمكنهم الاطّلاع على هذا العنصر ضمن نتيجة بحث. يجب تضمين جدول تدابير تحكم الوصول (ACL) الخاص بالعنصر عند فهرسته حتى يتوفّر لدى Google Cloud Search المعلومات التي يحتاجها لتوفير المستوى الصحيح من الوصول إلى العنصر.
توفّر حزمة Content Connector SDK مجموعة غنية من فئات جداول التحكم في الوصول (ACL) والأساليب لمحاولة محاكاة جداول التحكم في الوصول لمعظم المستودعات. عليك تحليل قائمة التحكّم بالوصول لكل عنصر في مستودعك وإنشاء قائمة تحكّم بالوصول مقابلة لخدمة Google Cloud Search عند فهرسة عنصر. إذا كان جدول أذونات الوصول إلى المستودع يستخدم مفاهيم مثل اكتساب أذونات الوصول، قد يكون من الصعب وضع نموذج له. لمزيد من المعلومات عن جداول التحكم في الوصول في Google Cloud Search، يُرجى الرجوع إلى مقالة جداول التحكم في الوصول في Google Cloud Search.
ملاحظة: تتيح واجهة برمجة التطبيقات Cloud Search Indexing API قوائم التحكّم بالوصول إلى نطاق واحد. ولا يسمح
بقوائم التحكّم بالوصول على مستوى النطاقات المختلفة. استخدِم فئة
Acl.Builder
لضبط أذونات الوصول إلى كل عنصر باستخدام قائمة أذونات وصول. إنّ مقتطف الرمز البرمجي التالي، المأخوذ
من نموذج التنقّل الكامل، يسمح
لجميع المستخدمين أو "المشرفين"
(getCustomerPrincipal()
)
بأن يكونوا "قارئين" لجميع العناصر
(.setReaders()
)
عند إجراء بحث.
عليك فهم قوائم التحكّم بالوصول لتصميمها بشكل صحيح في المستودع. على سبيل المثال، قد تتم فهرسة الملفات ضمن نظام ملفات يستخدم نوعًا من نماذج اكتساب الأذونات التي تكتسب فيها المجلدات الفرعية الأذونات من المجلدات الرئيسية. تتطلّب عملية وضع نماذج لميزة اكتساب أذونات الوصول إلى البيانات معلومات إضافية مُغطّاة في أذونات الوصول إلى البيانات في Google Cloud Search.
ضبط البيانات الوصفية لعنصر
يتم تخزين البيانات الوصفية في عنصر Item
. لإنشاء Item
، تحتاج إلى
حدّ أدنى من معرّف سلسلة فريد ونوع العنصر وقائمة التحكّم بالوصول وعنوان URL والإصدار الخاص بالعنصر.
يوضّح مقتطف الرمز التالي كيفية إنشاء Item
باستخدام فئة المساعدة
IndexingItemBuilder
.
إنشاء عنصر قابل للفهرسة
بعد ضبط البيانات الوصفية للعنصر، يمكنك إنشاء العنصر القابل للفهرسة باستخدام العنصر
RepositoryDoc.Builder
.
يوضّح المثال التالي كيفية إنشاء عنصر واحد قابل للفهرسة.
RepositoryDoc
هو نوع من
ApiOperation
الذي ينفِّذ طلب
IndexingService.indexItem()
الحقيقي.
يمكنك أيضًا استخدام الأسلوب
setRequestMode()
لفئة
RepositoryDoc.Builder
لتحديد طلب الفهرسة على أنّه ASYNCHRONOUS
أو SYNCHRONOUS
:
ASYNCHRONOUS
- يؤدي الوضع غير المتزامن إلى زيادة وقت الاستجابة من الفهرسة إلى العرض، ويسمح بزيادة حصة معدل نقل البيانات لطلبات الفهرسة. ننصح باستخدام الوضع غير المتزامن للفهرسة الأولية (إعادة تعبئة) للمستودع بأكمله.
SYNCHRONOUS
- يؤدي الوضع المتزامن إلى تقليل وقت الاستجابة من الفهرسة إلى العرض ويسمح
باستخدام حصة محدودة من معدل نقل البيانات. ننصح باستخدام الوضع المتزامن
لفهرسة التعديلات والتغييرات التي يتم إجراؤها على المستودع. إذا
لم يتم تحديده، سيتم ضبط وضع الطلب تلقائيًا على
SYNCHRONOUS
.
الخطوات التالية
في ما يلي بعض الخطوات التالية التي يمكنك اتّخاذها:
- (اختياري) نفِّذ طريقة
close()
لتحرير أي موارد قبل إيقاف الخدمة. - (اختياري) أنشئ موصِّل هوية باستخدام حزمة Content Connector SDK.
إنشاء موصّل لعبور الرسم البياني باستخدام فئة نموذج
تُستخدَم "قائمة انتظار فهرسة Cloud Search" لتخزين المعرّفات وقيم التجزئة الاختيارية لكل عنصر في المستودع. يُرسِل موصِّل التنقّل في الرسم البياني أرقام تعريف العناصر إلى قائمة انتظار فهرسة Google Cloud Search ويستردّها واحدًا تلو الآخر بهدف الفهرسة. تحافظ Google Cloud Search على قوائم الانتظار وتقارن محتويات قوائم الانتظار لتحديد حالة العنصر، مثل ما إذا تم حذف عنصر من المستودع. لمزيد من المعلومات عن "قائمة انتظار فهرسة Cloud Search"، يُرجى الرجوع إلى قائمة انتظار فهرسة Google Cloud Search.
أثناء الفهرسة، يتم جلب محتوى السلعة من مستودع البيانات ويتم دفع أي أرقام تعريف لسلعة فرعية إلى "القائمة الانتظار". يتابع الموصّل معالجة معرّفات العناصر الرئيسية والعناصر الفرعية بشكلٍ تصاعدي إلى أن يتمّ التعامل مع جميع العناصر.
يشير هذا القسم من المستندات إلى مقتطفات رمز من المثال GraphTraversalSample.
تنفيذ نقطة دخول الموصِّل
نقطة الدخول إلى الموصّل هي main()
. تتمثل المهمة الأساسية لهذه الطريقة في إنشاء مثيل لفئة
Application
وتشغيل أسلوب
start()
لتشغيل الموصّل.
قبل استدعاء application.start()
،
استخدِم فئة
IndexingApplication.Builder
لإنشاء مثيل لنموذج ListingConnector
. تقبل دالة
ListingConnector
كائنًا من نوع
Repository
، وتكون طُرقه هي التي تنفّذها.
يوضّح المقتطف التالي كيفية
إنشاء مثيل للعنصر ListingConnector
والعنصر Repository
المرتبط به:
من وراء الكواليس، تستدعي حزمة تطوير البرامج (SDK) الأسلوب
initConfig()
بعد أن تستدعي طريقة main()
في أداة الربط
Application.build
.
طريقة initConfig()
:
- تستدعي الوسيطة
Configuation.isInitialized()
للتأكّد من عدم بدء معالجةConfiguration
. - يبدأ عنصر
Configuration
باستخدام أزواج ملفّات تعريف الارتباط التي تقدّمها Google. يتم تخزين كل زوج مفتاح/قيمة في عنصرConfigValue
ضمن عنصرConfiguration
.
تنفيذ واجهة Repository
الغرض الوحيد من عنصر
Repository
هو تنفيذ عملية التنقّل في عناصر ال repository
وفهرستها. عند استخدام نموذج، ما عليك سوى إلغاء طرق معيّنة ضمن واجهة
Repository
لإنشاء رابط محتوى. تعتمد الطرق التي تلغيها
على النموذج واستراتيجية التنقّل التي تستخدمها. بالنسبة إلى
ListingConnector
،
يمكنك إلغاء الطرق التالية:
الطريقة
init()
لإجراء أي عملية إعداد وبدء لمستودع البيانات، يمكنك إلغاء طريقةinit()
.طريقة
getIds()
لاسترداد أرقام التعريف وقيم التجزئة لجميع السجلّات في المستودع، استبدِل طريقةgetIds()
.طريقة
getDoc()
لإضافة عناصر جديدة أو تعديلها أو حذفها من الفهرس، يمكنك إلغاء طريقةgetDoc()
.(اختياري) أسلوب
getChanges()
إذا كان المستودع يتيح رصد التغييرات، يمكنك إلغاء طريقةgetChanges()
. يتمّ استدعاء هذه الطريقة مرّة واحدة لكلّ عملية اجتياز تصاعدي مجدوَلة (على النحو المحدّد في الإعدادات) لاسترداد العناصر المعدّلة و index index.(اختياري) أسلوب
close()
إذا كنت بحاجة إلى إجراء عملية تنظيف للمستودع، يمكنك إلغاء طريقةclose()
. يتمّ استدعاء هذه الطريقة مرّة واحدة أثناء إيقاف الموصّل.
تُعيد كل طريقة من طرق كائن
Repository
نوعًا من كائن ApiOperation
. ينفِّذ ApiOperation
العنصر إجراءً في شكل مكالمة واحدة أو ربما متعددة
IndexingService.indexItem()
لتنفيذ الفهرسة الفعلية لمستودعك.
الحصول على مَعلمات الإعداد المخصّصة
كجزء من التعامل مع إعدادات الموصّل، عليك الحصول على أي
مَعلمات مخصّصة من كائن
Configuration
. يتم تنفيذ هذه المهمة عادةً في أسلوب
Repository
class's
init()
.
تحتوي فئة Configuration
على عدة طرق للحصول على أنواع بيانات مختلفة
من إحدى الإعدادات. تُعرِض كل طريقة كائن ConfigValue
. بعد ذلك، عليك
استخدام ConfigValue
get()
طريقة العنصر لاسترداد القيمة الفعلية.
يوضّح المقتطف التالي، من
FullTraversalSample
،
كيفية استرداد قيمة عددية مخصّصة واحدة من عنصر Configuration
:
للحصول على مَعلمة تحتوي على عدة قيم وتحليلها، استخدِم أحد أدوات تحليل أنواع فئة
Configuration
لتحليل البيانات إلى أجزاء منفصلة.
تستخدم المقتطف التالي من الدليل التعليمي للموصّل الطريقة
getMultiValue
للحصول على قائمة بأسماء مستودعات GitHub:
تنفيذ عملية اجتياز الرسم البياني
يمكنك إلغاء مفعول getIds()
الطريقة لاسترداد أرقام التعريف وقيم التجزئة لجميع السجلّات في المستودع.
تقبل طريقة getIds()
نقطة تفتيش. تُستخدَم نقطة التفتيش لاستئناف index
في عنصر معيّن في حال انقطاع العملية.
بعد ذلك، يمكنك إلغاء طريقة
getDoc()
لمعالجة كل عنصر في "قائمة انتظار فهرسة Cloud Search".
دفع معرّفات السلع وقيم التجزئة
يمكنك إلغاء الإعدادات التلقائية
getIds()
لاسترداد أرقام تعريف السلع وقيم تجزئة المحتوى المرتبطة بها من
المستودع. بعد ذلك، يتم تجميع أزواج رقم التعريف وقيمة التجزئة في عملية دفع
طلب إلى "قائمة انتظار فهرسة Cloud Search". عادةً ما يتم أولاً إرسال معرّفات الجذر أو العناصر الرئيسية، ثم معرّفات العناصر الفرعية إلى أن تتم معالجة التسلسل الهرمي الكامل للعناصر.
تقبل الطريقة getIds()
نقطة تفتيش تمثّل العنصر الأخير الذي سيتم
فهرسته. يمكن استخدام نقطة التفتيش لاستئناف الفهرسة عند عنصر معيّن في حال تعطّل العملية. بالنسبة إلى كل عنصر في مستودعك، نفِّذ الخطوات التالية في getIds()
:
- الحصول على كل معرّف سلعة وقيمة التجزئة المرتبطة به من المستودع
- احرِص على تجميع كل زوج من رقم التعريف وقيمة التجزئة في
PushItems
. - اجمع كل
PushItems
في أداة تكرار تعرضها الطريقةgetIds()
. يُرجى العلم أنّgetIds()
يعرض في الواقع ملفًا بتنسيقCheckpointCloseableIterable
وهو عبارة عن تكرار لعناصرApiOperation
، ويمثّل كل عنصر طلبًا من واجهة برمجة التطبيقات يتم تنفيذه على ملفRepositoryDoc
، مثل دفع العناصر إلى "القائمة الانتظار".
يوضّح المقتطف التالي من الرمز البرمجي كيفية الحصول على كل معرّف عنصر وقيمة تجزئة و
إدخالهما في PushItems
. PushItems
هو
ApiOperation
طلب لدفع عنصر إلى "قائمة انتظار فهرسة Cloud Search".
يوضِّح مقتطف الرمز التالي كيفية استخدام فئة
PushItems.Builder
لحزمة أرقام التعريف وقيم التجزئة في دفعة واحدة
ApiOperation
.
يتم دفع العناصر إلى "قائمة انتظار فهرسة Cloud Search" لإجراء المزيد من المعالجة.
استرداد كل عنصر ومعالجته
يمكنك إلغاء
getDoc()
لمعالجة كل عنصر في "قائمة انتظار فهرسة Cloud Search".
يمكن أن يكون العنصر جديدًا أو معدَّلاً أو لم يعد متوفّرًا في مستودع
المصدر. استرداد كل عنصر جديد أو معدَّل وفهرسته أزِل العناصر
من الفهرس التي لم تعُد متوفّرة في مستودع المصدر.
تقبل الطريقة getDoc()
عنصرًا من "قائمة انتظار" فهرسة Cloud Search. لكل عنصر في "القائمة الانتظار"، نفِّذ الخطوات التالية في الطريقة
getDoc()
:
تحقَّق ممّا إذا كان معرّف السلعة ضمن "قائمة انتظار فهرسة Cloud Search" متوفّرًا في المستودع. وإذا لم يكن الأمر كذلك، يمكنك حذف العنصر من الفهرس. إذا كان العنصر متوفّرًا، انتقِل إلى الخطوة التالية.
المؤشر الذي تم تغييره أو العناصر الجديدة:
- حدِّد الأذونات.
- اضبط البيانات الوصفية للعنصر الذي تُفهرسه.
- دمج البيانات الوصفية والعنصر في ملف واحد قابل للفهرسة
RepositoryDoc
- ضَع أرقام التعريف الفرعية في "قائمة انتظار فهرسة Cloud Search" لإجراء المزيد من المعالجة.
- أعِد
RepositoryDoc
.
التعامل مع العناصر المحذوفة
يوضّح المقتطف البرمجي التالي كيفية تحديد ما إذا كان هناك عنصر في الفهرس وحذفه في حال عدم توفّره.
ضبط الأذونات لعنصر
يستخدم مستودعك قائمة التحكّم بالوصول (ACL) لتحديد المستخدمين أو المجموعات التي يمكنها الوصول إلى عنصر معيّن. قائمة التحكّم في الوصول هي قائمة بأرقام تعريف المجموعات أو المستخدمين الذين يمكنهم الوصول إلى العنصر.
يجب تكرار قائمة التحكّم بالوصول (ACL) التي يستخدمها مستودعك لضمان أنّ المستخدمين الذين يمكنهم الوصول إلى عنصر معيّن فقط هم من يمكنهم الاطّلاع على هذا العنصر ضمن نتيجة بحث. يجب تضمين جدول تدابير تحكم الوصول (ACL) الخاص بالعنصر عند فهرسته حتى يتوفّر لدى Google Cloud Search المعلومات التي يحتاجها لتوفير المستوى الصحيح من الوصول إلى العنصر.
توفّر حزمة Content Connector SDK مجموعة غنية من فئات جداول التحكم في الوصول (ACL) والأساليب لمحاولة محاكاة جداول التحكم في الوصول لمعظم المستودعات. عليك تحليل قائمة التحكّم بالوصول لكل عنصر في مستودعك وإنشاء قائمة تحكّم بالوصول مقابلة لخدمة Google Cloud Search عند فهرسة عنصر. إذا كان جدول أذونات الوصول إلى المستودع يستخدم مفاهيم مثل اكتساب أذونات الوصول، قد يكون من الصعب وضع نموذج له. لمزيد من المعلومات عن جداول التحكم في الوصول في Google Cloud Search، يُرجى الرجوع إلى مقالة جداول التحكم في الوصول في Google Cloud Search.
ملاحظة: تتيح واجهة برمجة التطبيقات Cloud Search Indexing API قوائم التحكّم بالوصول إلى نطاق واحد. ولا يسمح
بقوائم التحكّم بالوصول على مستوى النطاقات المختلفة. استخدِم فئة
Acl.Builder
لضبط أذونات الوصول إلى كل عنصر باستخدام قائمة أذونات وصول. إنّ مقتطف الرمز البرمجي التالي، المأخوذ
من نموذج التنقّل الكامل، يسمح
لجميع المستخدمين أو "المشرفين"
(getCustomerPrincipal()
)
بأن يكونوا "قارئين" لجميع العناصر
(.setReaders()
)
عند إجراء بحث.
عليك فهم قوائم التحكّم بالوصول لتصميمها بشكل صحيح في المستودع. على سبيل المثال، قد تتم فهرسة الملفات ضمن نظام ملفات يستخدم نوعًا من نماذج اكتساب الأذونات التي تكتسب فيها المجلدات الفرعية الأذونات من المجلدات الرئيسية. تتطلّب عملية وضع نماذج لميزة اكتساب أذونات الوصول إلى البيانات معلومات إضافية مُغطّاة في أذونات الوصول إلى البيانات في Google Cloud Search.
ضبط البيانات الوصفية لعنصر
يتم تخزين البيانات الوصفية في عنصر Item
. لإنشاء Item
، تحتاج إلى
حدّ أدنى من معرّف سلسلة فريد ونوع العنصر وقائمة التحكّم بالوصول وعنوان URL والإصدار الخاص بالعنصر.
يوضّح مقتطف الرمز التالي كيفية إنشاء Item
باستخدام فئة المساعدة
IndexingItemBuilder
.
أنشئ العنصر القابل للفهرسة.
بعد ضبط البيانات الوصفية للعنصر، يمكنك إنشاء العنصر القابل للفهرسة باستخدام العنصر
RepositoryDoc.Builder
.
يوضّح المثال التالي كيفية إنشاء عنصر واحد قابل للفهرسة.
RepositoryDoc
هو نوع من ApiOperation
الذي ينفِّذ طلب
IndexingService.indexItem()
الفعلي.
يمكنك أيضًا استخدام الأسلوب
setRequestMode()
لفئة
RepositoryDoc.Builder
لتحديد طلب الفهرسة على أنّه ASYNCHRONOUS
أو SYNCHRONOUS
:
ASYNCHRONOUS
- يؤدي الوضع غير المتزامن إلى زيادة وقت الاستجابة من الفهرسة إلى العرض، ويسمح بزيادة حصة معدل نقل البيانات لطلبات الفهرسة. ننصح باستخدام الوضع غير المتزامن للفهرسة الأولية (إعادة تعبئة) للمستودع بأكمله.
SYNCHRONOUS
- يؤدي الوضع المتزامن إلى تقليل وقت الاستجابة من الفهرسة إلى العرض ويسمح
باستخدام حصة محدودة من معدل نقل البيانات. ننصح باستخدام الوضع المتزامن
لفهرسة التعديلات والتغييرات التي يتم إجراؤها على المستودع. إذا
لم يتم تحديده، سيتم ضبط وضع الطلب تلقائيًا على
SYNCHRONOUS
.
وضع أرقام تعريف الأطفال في "قائمة انتظار فهرسة Cloud Search"
يوضّح مقتطف الرمز التالي كيفية تضمين أرقام تعريف العناصر الفرعية للعنصر الرئيسي الذي تتم معالجته حاليًا في قائمة الانتظار للمعالجة. تتم معالجة أرقام التعريف هذه بعد فهرسة العنصر الرئيسي.
الخطوات التالية
في ما يلي بعض الخطوات التالية التي يمكنك اتّخاذها:
- (اختياري) نفِّذ طريقة
close()
لتحرير أي موارد قبل إيقاف الخدمة. - (اختياري) أنشئ موصِّل هوية باستخدام حزمة تطوير البرامج (SDK) لموصِّل الهوية.
إنشاء موصِّل محتوى باستخدام واجهة برمجة التطبيقات REST API
توضّح الأقسام التالية كيفية إنشاء أداة ربط محتوى باستخدام واجهة برمجة التطبيقات REST API.
تحديد استراتيجية التنقّل
تتمثّل الوظيفة الأساسية لموصّل المحتوى في التنقّل في مستودع و فهرسة بياناته. يجب تنفيذ استراتيجية تنقّل استنادًا إلى حجم البيانات وتنسيقها في مستودعك. في ما يلي ثلاث استراتيجيات شائعة للتنقّل:
- استراتيجية التنقّل الكامل
تبحث استراتيجية التنقّل الكاملة في المستودع بأكمله وتُفهرس كل عنصر بشكل عشوائي. تُستخدَم هذه الاستراتيجية عادةً عندما يكون لديك مستودع صغير ويمكنك تحمل النفقات العامة لإجراء جولة كاملة في كل مرة تُجري فيها الفهرسة.
إنّ استراتيجية التنقّل هذه مناسبة للمستودعات الصغيرة التي تحتوي على بيانات static وغير هرمية في الغالب. يمكنك أيضًا استخدام استراتيجية التنقّل هذه عندما يكون من الصعب رصد التغييرات أو عندما لا يتيح المستودع ذلك.
- استراتيجية تنقّل القائمة
تبحث استراتيجية تنقّل القائمة في المستودع بأكمله، بما في ذلك كلّ العناصر الفرعية، لتحديد حالة كلّ عنصر. بعد ذلك، يُجري الموصِّل جولة ثانية ويُفهرس فقط العناصر الجديدة أو التي تم تعديلها منذ عملية الفهرسة الأخيرة. تُستخدَم هذه الاستراتيجية عادةً لإجراء تعديلات تصاعدية على فهرس حالي (بدلاً من إجراء تنقّل كامل في كل مرّة تعدّل فيها الفهرس).
تكون استراتيجية التنقّل هذه مناسبة عندما يكون رصد التغييرات صعبًا أو لا يتيحه المستودع، أو إذا كانت لديك بيانات غير هرمية، أو إذا كنت تعمل مع مجموعات بيانات كبيرة جدًا.
- التنقّل في الرسم البياني
تبحث استراتيجية التنقّل في الرسم البياني في العقدة الرئيسية بالكامل لتحديد حالة كل عنصر. بعد ذلك، يُجري الموصِّل جولة ثانية ولا يفهرس سوى العناصر الجديدة في العقدة الجذر أو التي تم تعديلها منذ آخر عملية فهرسة. أخيرًا، يُرسِل الموصّل أي أرقام تعريف فرعية، ثمّ يُفهرس العناصر في العقد الفرعية التي تكون جديدة أو تم تعديلها. يواصل الموصّل المعالجة بشكلٍ متكرّر من خلال جميع العقد الفرعية إلى أن يتمّ معالجة جميع العناصر. وعادةً ما يتم استخدام هذا التنقّل للمستودعات التدرّجية حيث لا يكون إدراج جميع الأرقام التعريفية عمليًا.
تكون هذه الاستراتيجية مناسبة إذا كانت لديك بيانات هرمية يجب الزحف إليها، مثل سلسلة من الأدلة أو صفحات الويب.
تنفيذ استراتيجية التنقّل والفهرسة
يُشار إلى كل عنصر قابل للفهرسة في Cloud Search باسم عنصر في واجهة برمجة تطبيقات Cloud Search. يمكن أن يكون العنصر ملفًا أو مجلدًا أو سطرًا في ملف CSV أو سجلّ قاعدة بيانات.
بعد تسجيل المخطّط، يمكنك تعبئة الفهرس من خلال:
(اختياري) استخدام
items.upload
لتحميل ملفات أكبر من 100 كيلوبايت للفهرسة بالنسبة إلى الملفات الأصغر حجمًا، يمكنك تضمين المحتوى على هيئة inlineContent باستخدامitems.index
.(اختياري) استخدام
media.upload
لتحميل ملفات الوسائط من أجل فهرستهااستخدام
items.index
لفهرسة العنصر على سبيل المثال، إذا كان المخطّط يستخدم تعريف العنصر في مخطّط الفيلم، سيظهر طلب الفهرسة لمنتج واحد على النحو التالي:{ "name": "datasource/<data_source_id>/items/titanic", "acl": { "readers": [ { "gsuitePrincipal": { "gsuiteDomain": true } } ] }, "metadata": { "title": "Titanic", "viewUrl": "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" }
لإجراء تنقّل كامل، عليك إعادة فهرسة المحتوى بالكامل في البوتقة بشكل دوري. لإجراء تنقّل في قائمة أو رسم بياني، عليك تنفيذ رمز برمجي لـ معالجة تغييرات المستودع.
التعامل مع تغييرات المستودع
يمكنك جمع كل عنصر من مستودع وفهرسته بشكل دوري لإجراء فهرسة كاملة. على الرغم من أنّ الفهرسة الكاملة مفيدة لضمان تحديث الفهرس، إلا أنّها قد تكون مكلفة عند التعامل مع مستودعات أكبر أو هرمية.
بدلاً من استخدام طلبات الفهرسة لفهرسة مستودع كامل من حين لآخر، يمكنك أيضًا استخدام قائمة انتظار الفهرسة في Google Cloud كآلية لتتبُّع التغييرات وفهرسة العناصر التي تغيرت فقط. يمكنك استخدام طلبات items.push لإرسال العناصر إلى "قائمة الانتظار" من أجل فحصها وتعديلها لاحقًا. لمزيد من المعلومات عن "قائمة انتظار الفهرسة" في Google Cloud، يُرجى الرجوع إلى مقالة قائمة انتظار الفهرسة في Google Cloud.
لمزيد من المعلومات عن Google Cloud Search API، يُرجى الرجوع إلى Cloud Search API.