Simple Search Service هو تطبيق IBM Cloud الذي يتيح لك إنشاء محرك بحث متعدد الأوجه بسرعة، مما يعرض واجهة برمجة التطبيقات (API) التي يمكنك استخدامها لجلب البحث إلى تطبيقاتك الخاصة. تقوم الخدمة أيضًا بإنشاء موقع ويب يتيح لك معاينة واجهة برمجة التطبيقات (API) واختبارها مقابل بياناتك الخاصة بالإضافة إلى إدارة بياناتك عبر نظام إدارة محتوى بسيط.
بمجرد النشر، استخدم المتصفح لتحميل بيانات CSV أو TSV. حدد الحقول المراد عرضها، وستتولى الخدمة الباقي.
يستخدم التطبيق خدمات Bluemix التالية:
بمجرد تحميل البيانات، يمكنك استخدام واجهة المستخدم لتصفح وإدارة بياناتك عبر نظام إدارة المحتوى المتكامل. بالإضافة إلى ذلك، تتوفر نقطة نهاية API التي تدعم CORS على <your domain name>/search
. تستفيد نقطة النهاية من التكامل المدمج في Cloudant لفهرسة النص الكامل لـ Lucene. إليك ما تحصل عليه:
?q=colour:black+AND+brand:fender
?q=black+fender+strat
?q=black+fender+strat&bookmark=<xxx>
?sort=color
أو ?sort=-color
للتنازليمكنك استخدام هذا مع بقية واجهة برمجة التطبيقات (API) لدمج خدمة البحث البسيط في تطبيقاتك. للحصول على مرجع كامل لواجهة برمجة التطبيقات، انقر هنا.
في حين أن هذا التطبيق عبارة عن عرض توضيحي لعرض مدى سهولة إنشاء تطبيق على Bluemix باستخدام Node.js وCloudant، فإنه يوفر أيضًا واجهة برمجة تطبيقات بحث ناضجة تتوسع مع إضافة عقد خدمة بحث بسيطة متعددة. في الواقع، تعمل بنية مماثلة على تعزيز تجربة البحث في كتالوج خدمات Bluemix.
تتوفر هنا إرشادات أكثر تفصيلاً حول استخدام خدمة البحث البسيطة.
أسرع طريقة لنشر هذا التطبيق على Bluemix هي النقر فوق الزر Deploy to IBM Cloud أدناه.
ليس لديك حساب IBM Cloud؟ إذا لم تكن قد قمت بذلك بالفعل، فسوف تتم مطالبتك بالتسجيل للحصول على حساب IBM Cloud عند النقر فوق الزر. قم بالتسجيل، وقم بالتحقق من عنوان بريدك الإلكتروني، ثم قم بالعودة إلى هنا وانقر فوق الزر Deploy to IBM Cloud مرة أخرى. تتيح لك بيانات الاعتماد الجديدة الخاصة بك النشر على النظام الأساسي وكذلك البرمجة عبر الإنترنت باستخدام Bluemix وGit. إذا كانت لديك أسئلة حول العمل في Bluemix، يمكنك العثور على الإجابات في IBM Cloud Docs.
يتطلب النشر اليدوي إلى IBM Cloud git
وCloud Foundry CLI
$ git clone https://github.com/ibm-watson-data-lab/simple-search-service.git
$ cf create-service cloudantNoSQLDB Lite simple-search-service-cloudant-service
$ cd simple-search-service
$ cf push
انسخ هذا المستودع ثم قم بتشغيل npm install
لإضافة مكتبات Node.js المطلوبة لتشغيل التطبيق.
ثم قم بإنشاء بعض متغيرات البيئة التي تحتوي على عنوان URL الخاص بـ Cloudant.
# Cloudant URL
export SSS_CLOUDANT_URL= ' https://<USERNAME>:<PASSWORD>@<HOSTNAME> '
استبدال العناصر النائبة USERNAME
و PASSWORD
و HOSTNAME
بتفاصيل حساب Cloudant الخاص بك.
ثم قم بتشغيل:
node app.js
تستخدم خدمة البحث البسيط Etcd لاكتشاف واستخدام بعض خدماتنا البسيطة الأخرى لتوسيع الخدمة وتحسينها.
الخدمات الأخرى المتوفرة لخدمة البحث البسيط هي:
يتطلب تمكين سجل الخدمة تعيين متغير بيئة، ETCD_URL
. يجب أن يكون هذا هو عنوان URL لمثيل Etcd الخاص بك بما في ذلك أي معلومات مصادقة HTTP أساسية
export ETCD_URL='http://username:[email protected]'
إذا تم تمكين سجل الخدمة، فسيتم عرض أي خدمات تم اكتشافها على صفحة الخدمات، مع مفتاح تبديل لتمكين هذه الخدمات أو تعطيلها.
بمجرد التمكين، سيتم دمج هذه الخدمات تلقائيًا في خدمة البحث البسيط.
إذا قمت بتحميل المحتوى الخاص بك إلى خدمة البحث البسيط ولكنك تريد الآن أن تكون نقطة النهاية /search
فقط متاحة للعامة، فيمكنك تمكين "وضع التأمين".
ما عليك سوى تعيين متغير بيئة يسمى LOCKDOWN
على true
قبل تشغيل خدمة البحث البسيط:
export LOCKDOWN=true
node app.js
أو قم بتعيين متغير بيئة مخصص في Bluemix.
عند اكتشاف وضع التأمين، ستحصل جميع طلبات الويب على استجابة 401 Unauthorised
، باستثناء نقطة النهاية /search
التي ستستمر في العمل. ويمنع هذا تعديل بياناتك حتى يتم إيقاف وضع التأمين مرة أخرى، وذلك عن طريق إزالة متغير البيئة.
إذا كنت ترغب في الوصول إلى خدمة البحث البسيط أثناء وجودك في وضع التأمين، فيمكنك تمكين مصادقة HTTP الأساسية عن طريق تعيين متغيرين إضافيين للبيئة:
SSS_LOCKDOWN_USERNAME
SSS_LOCKDOWN_PASSWORD
عند تعيين هذه الإعدادات، ستتمكن من تجاوز وضع التأمين من خلال توفير اسم مستخدم وكلمة مرور متطابقين. إذا قمت بالوصول إلى واجهة المستخدم، فسيطالبك متصفحك بهذه التفاصيل. إذا كنت تريد الوصول إلى واجهة برمجة التطبيقات (API)، يمكنك تقديم اسم المستخدم وكلمة المرور كجزء من طلبك:
curl -X GET ' http://<yourdomain>/row/4dac2df712704b397f1b64a1c8e25033 ' --user < username > : < password >
تحتوي خدمة البحث البسيط على واجهة برمجة التطبيقات (API) التي تتيح لك إدارة بياناتك خارج واجهة المستخدم المتوفرة. استخدم هذا لدمج خدمة البحث البسيطة مع تطبيقاتك.
يتم توفير البحث من خلال نقطة النهاية GET /search
.
ابحث في أي من الحقول المفهرسة في مجموعة البيانات الخاصة بك باستخدام البحث الميداني.
# Return any docs where colour=black
GET /search ? q=colour:black
يستخدم البحث الميداني Cloudant Search.
ابحث في جميع الحقول في مجموعة البيانات الخاصة بك باستخدام البحث عن النص الحر.
# Return any docs 'black' is mentioned
GET /search ? q=black
احصل على الصفحة التالية من النتائج باستخدام معلمة bookmark
. يتم توفير ذلك في جميع النتائج من نقطة النهاية /search
(راجع نماذج الاستجابات أدناه). قم بتمرير هذا إلى البحث التالي (بنفس معلمات الاستعلام) لإرجاع المجموعة التالية من النتائج.
# Return the next set of docs where 'black' is mentioned
GET /search ? q=black & bookmark= < ... >
من الممكن تغيير مقدار النتائج التي يتم إرجاعها باستخدام معلمة limit
.
# Return the next set of docs where 'black' is mentioned, 10 at a time
GET /search ? q=black & bookmark= < ... >& limit=10
سوف تستجيب جميع عمليات البحث بنفس الطريقة.
{
"total_rows": 19, // The total number of rows in the dataset
"bookmark": "g1AAAA...JjFkA0kLVvg", // bookmark, for pagination
"rows": [ // the rows returned in this response
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... }
],
"counts": { // counts of the fields which were selected as facets during import
"type": {
"Black": 19
}
},
"_ts": 1467108849821
}
يمكن إرجاع صف معين باستخدام المعرف الفريد الخاص به، الموجود في حقل _id
لكل صف. يتم ذلك باستخدام نقطة النهاية GET /row/:id
.
GET /row/44d2a49201625252a51d252824932580
سيعيد هذا تمثيل JSON لهذا الصف المحدد.
يمكن إضافة بيانات جديدة صفًا في المرة باستخدام نقطة نهاية POST /row
.
قم باستدعاء نقطة النهاية هذه لتمرير أزواج المفاتيح/القيمة التي تطابق الحقول الموجودة في البيانات الموجودة. لا توجد حقول مطلوبة، وسيتم فرض جميع أنواع الحقول. سيفشل الطلب إذا تم تمرير أي حقول غير موجودة بالفعل في مجموعة البيانات.
POST /row -d ' field_1=value_1&field_n=value_n '
سيتم إنشاء _id
للصف الجديد تلقائيًا وإعادته في حقل id
الاستجابة.
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 1-8a23bfa9ee2c88f2ae8dd071d2cafd56 "
}
يمكن تحديث البيانات الخارجة باستخدام نقطة النهاية PUT /row/:id
.
قم باستدعاء نقطة النهاية هذه لتمرير أزواج المفتاح/القيمة التي تطابق الحقول الموجودة في البيانات الموجودة - يجب عليك أيضًا تضمين المعلمة _id
في أزواج المفتاح/القيمة. لا توجد حقول مطلوبة، وسيتم فرض جميع أنواع الحقول. سيفشل الطلب إذا تم تمرير أي حقول غير موجودة بالفعل في مجموعة البيانات.
ملاحظة: ستتم إزالة أي حقول لم يتم توفيرها في وقت التحديث. حتى لو لم يتغير الحقل، فيجب توفيره دائمًا للحفاظ على قيمته.
الاستجابة مشابهة لتلك الخاصة بإضافة صف، على الرغم من ملاحظة زيادة رقم مراجعة المستند.
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 2-6281e0a21ed461659dba6a96d3931ccf "
}
يمكن حذف صف معين باستخدام المعرف الفريد الخاص به، الموجود في حقل _id
لكل صف. يتم ذلك باستخدام نقطة النهاية DELETE /row/:id
.
DELETE /row/44d2a49201625252a51d252824932580
الاستجابة مشابهة لتلك الخاصة بتحرير صف، على الرغم من ملاحظة مرة أخرى أن رقم مراجعة المستند قد زاد مرة أخرى.
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 3-37b4f5c715916bf8f90ed997d57dc437 "
}
لحذف كافة البيانات برمجياً وتهيئة الفهرس
POST /initialize
بما في ذلك خاصية schema
في الحمولة التي تحدد البنية التالية
{ "fields": [
{
"name": "id",
"type": "string",
"example": "example_id",
"facet": true
},
{
"name": "score",
"type": "number",
"example": 8,
"facet": false
},
{
"name": "tags",
"type": "arrayofstrings",
"example": "example_tag_1,example_tag_2",
"facet": true
}
]
}
> This example defines a schema containing three fields of which two will be enabled for faceted search.
القيم الصالحة:
name
الخاصية: أي سلسلةtype
الخاصية: number
، boolean
، string
، arrayofstrings
(على سبيل المثال val1,val2,val3
)example
الخاصية: أي قيمة صالحة لهذا type
facet
الملكية : true
أو false
ارجع إلى https://github.com/IBM/metrics-collector-client-node#privacy-notice
بالنسبة لعمليات النشر اليدوية، يمكن تعطيل تتبع النشر عن طريق إزالة require("metrics-tracker-client").track();
من نهاية ملف الخادم الرئيسي app.js
حقوق الطبع والنشر لعام 2018 محفوظة لشركة IBM Cloud Data Services
مرخص بموجب ترخيص Apache، الإصدار 2.0 ("الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.