هذا الدليل مخصّص لمشرفي أداة ربط ملفات CSV (القيم المفصولة بفواصل) في Google Cloud Search المسؤولين عن تنزيل أداة الربط وإعدادها وتشغيلها ومراقبتها.
يتضمّن هذا الدليل تعليمات حول المهام الرئيسية التالية:
- نزِّل برنامج موصّل CSV في Cloud Search.
- اضبط الموصّل لمصدر بيانات CSV محدّد.
- نشِّر الموصّل وشغِّله.
لفهم المفاهيم الواردة في هذا المستند، يجب أن تكون على دراية بخدمة Google Workspace وملفات CSV وقوائم التحكّم بالوصول (ACL).
نظرة عامة على موصّل ملفات CSV في Cloud Search
يعمل موصّل ملفات CSV في Cloud Search مع أي ملف نصي يتضمّن قيمًا مفصولة بفواصل (CSV). يخزِّن ملف CSV البيانات الجدولية، حيث يمثّل كل سطر سجل بيانات.
يستخرج الموصّل الصفوف من ملف CSV ويفهرسها في Cloud Search باستخدام Indexing API. بعد الفهرسة، يمكن البحث عن الصفوف من خلال برامج Cloud Search أو واجهة برمجة التطبيقات Query API. يتيح الموصل أيضًا استخدام قوائم التحكم بالوصول للتحكّم في إذن المستخدمين بالوصول إلى المحتوى.
يمكنك تثبيت الموصل على نظام التشغيل Linux أو Windows. قبل النشر، تأكَّد من توفّر المكوّنات التالية:
- يجب أن يكون الإصدار 1.8 من Java JRE مثبَّتًا على الكمبيوتر الذي يتم تشغيل الموصّل عليه.
- معلومات Google Workspace لإنشاء عمليات ربط:
- مفتاح Google Workspace الخاص (الذي يحتوي على معرّف حساب الخدمة)
- معرّف مصدر بيانات Google Workspace
عادةً، يقدّم مشرف Google Workspace للنطاق بيانات الاعتماد هذه.
خطوات النشر
اتّبِع الخطوات التالية لنشر موصّل ملفات CSV في Cloud Search:
- تثبيت برنامج الموصّل
- تحديد إعدادات الموصّل
- ضبط إعدادات الوصول إلى مصدر بيانات Cloud Search
- ضبط إذن الوصول إلى ملف CSV
- تحديد أسماء الأعمدة والمفاتيح الفريدة وأعمدة التاريخ والوقت
- تحديد أعمدة لعناوين URL القابلة للنقر في نتائج البحث
- تحديد البيانات الوصفية وتنسيقات الأعمدة
- جدولة عملية استرجاع البيانات
- تحديد خيارات قائمة التحكّم بالوصول
1. تثبيت حزمة تطوير البرامج (SDK)
ثبِّت حزمة SDK في مستودع Maven المحلي.
استنسِخ مستودع حزمة تطوير البرامج (SDK) من GitHub.
$ git clone https://github.com/google-cloudsearch/connector-sdk.git $ cd connector-sdk/csv
اطّلِع على الإصدار الذي اخترته:
$ git checkout tags/v1-0.0.3
إنشاء الموصّل:
$ mvn package
استخرِج الموصل وثبِّته:
$ cp target/google-cloudsearch-csv-connector-v1-0.0.3.zip installation-dir $ cd installation-dir $ unzip google-cloudsearch-csv-connector-v1-0.0.3.zip $ cd google-cloudsearch-csv-connector-v1-0.0.3
2. تحديد إعدادات موصّل CSV
يمكنك التحكّم في سلوك أداة الربط من خلال المَعلمات في ملف الإعدادات. تشمل المَعلمات القابلة للضبط ما يلي:
- الوصول إلى مصدر البيانات
- موقع ملف CSV وتعريفاته
- أعمدة المعرّف الفريد
- خيارات التنقّل وقوائم التحكّم بالوصول
لإنشاء ملف إعداد، اتّبِع الخطوات التالية:
- افتح محرِّر نصوص وسمِّ الملف
connector-config.properties. - أضِف مَعلمات الإعداد على شكل أزواج
key=value، مع وضع كل زوج في سطر جديد. للاطّلاع على مثال لملف إعداد، يُرجى الرجوع إلى مثال على ملف إعداد.
احتفظ بملف الإعداد في الدليل نفسه الذي يحتوي على الموصّل لتسهيل عملية التتبّع. لضمان تعرّف الموصّل على ملفك، حدِّد مساره في سطر الأوامر. في الحالات الأخرى، يتم ضبط الموصل تلقائيًا على connector-config.properties في الدليل المحلي. راجِع مقالة
تشغيل الموصّل.
3- ضبط إذن الوصول إلى مصدر بيانات Cloud Search
يجب أن يحدّد ملف الإعداد المَعلمات اللازمة للوصول إلى مصدر بيانات Cloud Search. يجب توفير معرّف مصدر البيانات ومعرّف حساب الخدمة ومسار ملف المفتاح الخاص لحساب الخدمة.
| الإعداد | المَعلمة |
| رقم تعريف مصدر البيانات | api.sourceId=1234567890abcdef
الحقل مطلوب. رقم تعريف مصدر Cloud Search الذي أعدّه مشرف Google Workspace |
| مسار المفتاح الخاص لحساب الخدمة | api.serviceAccountPrivateKeyFile=./PrivateKey.json
الحقل مطلوب. ملف مفتاح حساب الخدمة لإمكانية وصول الموصل. |
| رقم تعريف مصدر الهوية | api.identitySourceId=x0987654321
مطلوب في حال استخدام مستخدمين ومجموعات خارجيين رقم تعريف مصدر الهوية الذي تم إعداده من قِبل مشرف Google Workspace |
4. إعداد مَعلمات ملف CSV
تحديد مسار الملف وتنسيقه وترميزه
| الإعداد | المَعلمة |
| مسار ملف CSV | csv.filePath=./movie_content.csv
الحقل مطلوب. تمثّل هذه السمة المسار إلى الملف المراد فهرسته. |
| تنسيق الملف | csv.format=DEFAULT
تمثّل هذه السمة تنسيق الملف. يجب أن تكون القيم من فئة CSVFormat في Apache Commons CSV. تشمل قيم التنسيق: |
| معدِّل تنسيق الملف | csv.format.withMethod=value
تعديل على طريقة تعامل Cloud Search مع الملف الطُرق المتاحة هي من فئة CSVFormat في Apache Commons CSV وتشمل تلك التي تقبل قيمة حرف واحد أو سلسلة أو قيمة منطقية. على سبيل المثال، لتحديد فاصلة منقوطة كمحدد، استخدِم |
| نوع ترميز الملف | csv.fileEncoding=UTF-8
مجموعة أحرف Java التي سيتم استخدامها يتم ضبط هذه السمة تلقائيًا على مجموعة الأحرف الخاصة بالنظام الأساسي. |
5- تحديد أسماء الأعمدة المطلوب فهرستها وأعمدة المفتاح الفريد
قدِّم معلومات الأعمدة في ملف الإعداد.
| الإعداد | المَعلمة |
| الأعمدة المطلوب فهرستها | csv.csvColumns=movieId,movieTitle,description,actors,releaseDate,year,userratings...
أسماء الأعمدة التي سيتم فهرسة البيانات منها في ملف CSV يتم تلقائيًا استخدام الصف الأول من ملف CSV كعنوان. إذا تم تحديد |
| أعمدة المفتاح الفريد | csv.uniqueKeyColumns=movieId
الأعمدة المستخدَمة لإنشاء معرّف فريد القيمة التلقائية هي رمز التجزئة الخاص بالسجلّ. |
6. تحديد أعمدة لعناوين URL الخاصة بنتائج البحث القابلة للنقر
تفعيل عناوين URL قابلة للنقر في نتائج البحث
| الإعداد | المَعلمة |
| تنسيق عنوان URL الخاص بنتائج البحث | url.format=https://mymoviesite.com/movies/{0}
الحقل مطلوب. التنسيق المستخدَم لإنشاء عنوان URL الخاص بالعرض |
| معلمات عنوان URL | url.columns=movieId
الحقل مطلوب. أسماء أعمدة ملف CSV التي سيتم استخدام قيمها لإنشاء عنوان URL الخاص بعرض السجلّ. |
| معلَمات عناوين URL الخاصة بنتائج البحث التي يجب تجاهلها | url.columnsToEscape=movieId
اختياريّ. أسماء أعمدة ملف CSV التي سيتم ترميز قيمها باستخدام عنوان URL لإنشاء عنوان URL صالح للعرض. |
7. تحديد البيانات الوصفية وتنسيقات الأعمدة وجودة البحث
يمكنك إضافة مَعلمات إلى ملف الإعداد تحدّد ما يلي:
مَعلمات إعداد البيانات الوصفية
تصف هذه المَعلمات الأعمدة التي يتم ملؤها ببيانات وصفية خاصة بالسلع.
| الإعداد | المعلَمة |
| العنوان | itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
سمة البيانات الوصفية لعنوان المستند القيمة التلقائية هي سلسلة فارغة. |
| عنوان URL | itemMetadata.sourceRepositoryUrl.field=url
itemMetadata.sourceRepositoryUrl.defaultValue=https://www.imdb.com/title/tt0031381/
هي سمة البيانات الوصفية الخاصة بعنوان URL للمستند في نتائج البحث. |
| الطابع الزمني للإنشاء | itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
سمة البيانات الوصفية للطابع الزمني لإنشاء المستند |
| وقت آخر تعديل | itemMetadata.updateTime.field=releaseDate
itemMetadata.updateTime.defaultValue=1940-01-17
سمة البيانات الوصفية الخاصة بالطابع الزمني لآخر تعديل للمستند. |
| لغة المستند | itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
لغة المحتوى للمستندات التي تتم فهرستها |
| نوع عنصر المخطط | itemMetadata.objectType.field=typeitemMetadata.objectType.defaultValue=movie
نوع العنصر الذي تستخدمه أداة الربط، كما هو محدّد في المخطط لن يفهرس الموصل أي بيانات منظَّمة إذا لم يتم تحديد هذه السمة. |
تنسيقات التاريخ والوقت
تحدّد هذه المَعلمة تنسيقات إضافية للتاريخ والوقت من أجل تحليل قيم السلسلة إلى حقول التاريخ أو التاريخ والوقت.
| الإعداد | المعلَمة |
| تنسيقات إضافية للتاريخ والوقت | structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
قائمة مفصولة بفواصل منقوطة تتضمّن أنماط java.time.format.DateTimeFormatter إضافية. يتم استخدام الأنماط عند تحليل قيم السلسلة لأي حقول تاريخ أو تاريخ ووقت في بيانات التعريف أو المخطط. القيمة التلقائية هي قائمة فارغة، ولكن يتم دائمًا توفير تنسيقات RFC 3339 وRFC 1123.
|
تنسيقات الأعمدة
تحدّد هذه المَعلمات كيفية تحليل الأعمدة في ملف CSV.
| الإعداد | المَعلمة |
| تخطّي العنوان | csv.skipHeaderRecord=true
تجاهُل السطر الأول القيمة التلقائية هي "خطأ". |
| أعمدة متعدّدة القيم | csv.multiValueColumns=genre,actors
أسماء الأعمدة التي تتضمّن قيمًا متعددة |
| محدّد الأعمدة المتعدّدة القيم | csv.multiValue.genre=;
محدّد الأعمدة المتعددة القيم الفاصل التلقائي هو الفاصلة. |
جودة البحث
يستخدم الموصل نموذج محتوى لتنسيق السجلات. يحظى حقل العنوان بالأولوية القصوى. يمكنك تحديد مستويات الأولوية (عالية أو متوسطة أو منخفضة) للحقول الأخرى.
| الإعداد | المَعلمة |
| عنوان المحتوى |
contentTemplate.csv.title=movieTitle
عنوان المحتوى هو الحقل الأعلى جودة في البحث. |
| جودة البحث العالية لحقول المحتوى |
contentTemplate.csv.quality.high=actors
حقول المحتوى التي تم منحها قيمة عالية لجودة البحث القيمة التلقائية هي سلسلة فارغة. |
| جودة البحث المنخفضة لحقول المحتوى |
contentTemplate.csv.quality.low=genre
حقول المحتوى التي تم منحها قيمة منخفضة لجودة البحث القيمة التلقائية هي سلسلة فارغة. |
| جودة بحث متوسطة لحقول المحتوى |
contentTemplate.csv.quality.medium=description
حقول المحتوى التي تم منحها قيمة متوسطة لجودة البحث القيمة التلقائية هي سلسلة فارغة. |
| حقول المحتوى غير المحدّدة |
contentTemplate.csv.unmappedColumnsMode=IGNORE
كيفية تعامل أداة الربط مع حقول المحتوى غير المحدّدة القيم الصالحة هي:
القيمة التلقائية هي APPEND. |
8. جدولة عملية استكشاف البيانات
الزحف هو عملية اكتشاف المحتوى. يتنقّل الموصّل بين صفوف ملف CSV ويفهرسها باستخدام Indexing API. لا ينفّذ موصّل CSV سوى عمليات بحث شاملة.
| الإعداد | المَعلمة |
| فاصل الاجتياز | schedule.traversalIntervalSecs=7200
الفاصل الزمني بين عمليات البحث الكاملة بالثواني القيمة التلقائية هي 86400 (يوم واحد). |
| التنقّل عند بدء التشغيل | schedule.performTraversalOnStart=false
ينفّذ الموصّل عملية اجتياز عند بدء تشغيله، بدلاً من انتظار انتهاء الفاصل الزمني الأول. القيمة التلقائية هي |
9- تحديد خيارات قائمة التحكّم بالوصول
يستخدم Connector قوائم التحكّم بالوصول للتحكّم في الوصول. إذا كان المستودع يوفّر قوائم ACL،
حمِّلها. بخلاف ذلك، اضبط قوائم ACL التلقائية. اضبط defaultAcl.mode على قيمة
غير none.
| الإعداد | المَعلمة |
| وضع قائمة التحكم في الوصول | defaultAcl.mode=fallback
الحقل مطلوب. لا يتيح الموصل سوى وضع الاحتياط. |
| اسم قائمة التحكّم بالوصول التلقائية | defaultAcl.name=VIRTUAL_CONTAINER_FOR_CONNECTOR_1
اختياريّ. تتجاوز هذه السمة اسم الحاوية الافتراضية الذي يستخدمه الموصل في قوائم التحكّم بالوصول التلقائية. تكون القيمة التلقائية |
| قائمة التحكم بالوصول العامة التلقائية | defaultAcl.public=true
يضبط المستودع بأكمله على إمكانية الوصول إلى النطاق العام. القيمة التلقائية هي false. |
| المستخدمون الذين يمكنهم قراءة مجموعة قائمة التحكّم بالوصول (ACL) الشائعة | defaultAcl.readers.groups=google:group1, group2
|
| برامج قراءة قوائم التحكّم بالوصول الشائعة | defaultAcl.readers.users=user1, user2, google:user3
|
| رفض ACL المشترك لقراء المجموعة | defaultAcl.denied.groups=group3
|
| القراء الذين تم رفض وصولهم إلى قائمة التحكّم بالوصول الشائعة | defaultAcl.denied.users=user4, user5
|
| إذن الوصول إلى النطاق بالكامل | لتحديد أن يكون كل سجل مفهرس متاحًا للجميع من قِبل كل مستخدم في النطاق، اضبط الخيارَين التاليَين على القيم:
|
| قائمة التحكم بالوصول (ACL) المحدّدة الشائعة | لتحديد قائمة ACL مشتركة لكل سجلّ، اضبط المَعلمات التالية:
يُفترض أنّ المستخدمين والمجموعات محدَّدة في النطاق المحلي ما لم يتم تحديد البادئة " المستخدم أو المجموعة التلقائيان هما سلسلة فارغة. لا توفِّر خيارات المستخدم والمجموعة إلا إذا كانت قيمة إذا كانت قيمة |
تعريف المخطط
لإتاحة طلبات البحث عن البيانات المنظَّمة، عليك إعداد مخطط لمصدر البيانات.
على سبيل المثال، لنفترض أنّ لديك ملف CSV يتضمّن المعلومات التالية عن الأفلام:
- movieId
- movieTitle
- الوصف
- سنة
- releaseDate
- الممثلون (قيم متعدّدة مفصولة بفواصل (،))
- النوع (قيم متعددة)
- التقييمات
استنادًا إلى هذه البنية، يمكنك تحديد المخطط التالي لمصدر البيانات:
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "actors",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"textPropertyOptions": {
"operatorOptions": {
"operatorName": "actor"
}
}
},
{
"name": "releaseDate",
"isReturnable": true,
"isRepeatable": false,
"isFacetable": false,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
},
{
"name": "movieTitle",
"isReturnable": true,
"isRepeatable": false,
"isFacetable": false,
"textPropertyOptions": {
"retrievalImportance": {
"importance": "HIGHEST"
},
"operatorOptions": {
"operatorName": "title"
}
}
},
{
"name": "genre",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"enumPropertyOptions": {
"operatorOptions": {
"operatorName": "genre"
},
"possibleValues": [
{
"stringValue": "Action"
},
{
"stringValue": "Documentary"
},
{
"stringValue": "Drama"
},
{
"stringValue": "Crime"
},
{
"stringValue": "Sci-fi"
}
]
}
},
{
"name": "userRating",
"isReturnable": true,
"isRepeatable": false,
"isFacetable": true,
"integerPropertyOptions": {
"orderedRanking": "ASCENDING",
"maximumValue": "10",
"operatorOptions": {
"operatorName": "score",
"lessThanOperatorName": "scorebelow",
"greaterThanOperatorName": "scoreabove"
}
}
}
]
}
]
}
مثال على ملف الإعداد
يوضّح ملف الإعدادات المثال التالي أزواج المَعلمات key=value
التي تحدّد سلوك أداة ربط نموذجية.
# data source access
api.sourceId=1234567890abcd
api.serviceAccountPrivateKeyFile=./PrivateKey.json
# CSV data structure
csv.filePath=./movie_content.csv
csv.csvColumns=movieId,movieTitle,description,releaseYear,genre,actors,ratings,releaseDate
csv.skipHeaderRecord=true
url.format=https://mymoviesite.com/movies/{0}
url.columns=movieId
csv.datetimeFormat.releaseDate=yyyy-mm-dd
csv.multiValueColumns=genre,actors
csv.multiValue.genre=;
contentTemplate.csv.title=movieTitle
# metadata structured data and content
itemMetadata.title.field=movieTitle
itemMetadata.createTime.field=releaseDate
itemMetadata.contentLanguage.defaultValue=en-US
itemMetadata.objectType.defaultValue=movie
contentTemplate.csv.quality.medium=description
contentTemplate.csv.unmappedColumnsMode=IGNORE
#ACLs
defaultAcl.mode=fallback
defaultAcl.public=true
تشغيل الموصّل
لتشغيل أداة الربط من سطر الأوامر، اتّبِع الخطوات التالية:
$ java -jar google-cloudsearch-csv-connector-v1-0.0.3.jar -Dconfig=my.config
تتوفّر سجلّات الموصل تلقائيًا في الإخراج العادي. يمكنك تسجيل الدخول إلى الملفات
من خلال تحديد logging.properties.