Simple Search Service คือแอป IBM Cloud ที่ช่วยให้คุณสามารถสร้างเครื่องมือค้นหาแบบประกอบได้อย่างรวดเร็ว โดยเปิดเผย API ที่คุณสามารถใช้เพื่อนำการค้นหามาสู่แอปของคุณเอง บริการนี้ยังสร้างเว็บไซต์ที่ให้คุณดูตัวอย่าง API และทดสอบกับข้อมูลของคุณเอง รวมถึงจัดการข้อมูลของคุณผ่าน CMS แบบธรรมดา
เมื่อปรับใช้แล้ว ให้ใช้เบราว์เซอร์เพื่ออัปโหลดข้อมูล CSV หรือ TSV ระบุฟิลด์ที่จะ facet แล้วบริการจะจัดการส่วนที่เหลือ
แอปพลิเคชันใช้บริการ Bluemix เหล่านี้:
เมื่ออัปโหลดข้อมูลแล้ว คุณสามารถใช้ UI เพื่อเรียกดูและจัดการข้อมูลของคุณผ่าน CMS ที่ผสานรวมได้ นอกจากนี้ จุดสิ้นสุด 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 ที่เหลือเพื่อรวม Simple Search Service เข้ากับแอพของคุณได้ สำหรับการอ้างอิง API ฉบับเต็ม คลิกที่นี่
แม้ว่าแอปนี้จะเป็นเดโมเพื่อแสดงให้เห็นว่าคุณสามารถสร้างแอปบน Bluemix โดยใช้ Node.js และ Cloudant ได้อย่างง่ายดายเพียงใด แต่แอปนี้ยังมี API การค้นหาที่สมบูรณ์ซึ่งปรับขนาดได้ด้วยการเพิ่มโหนด Simple Search Service หลายโหนด อันที่จริง สถาปัตยกรรมที่คล้ายกันช่วยขับเคลื่อนประสบการณ์การค้นหาในแค็ตตาล็อกบริการ Bluemix
คำแนะนำโดยละเอียดเพิ่มเติมเกี่ยวกับการใช้บริการ Simple Search มีอยู่ที่นี่
วิธีที่เร็วที่สุดในการปรับใช้แอปพลิเคชันนี้กับ Bluemix คือการคลิกปุ่ม ปรับใช้กับ IBM Cloud ด้านล่าง
ยังไม่มีบัญชี IBM Cloud? หากคุณยังไม่ได้ดำเนินการ คุณจะได้รับแจ้งให้สมัครบัญชี IBM Cloud เมื่อคุณคลิกปุ่ม ลงทะเบียน ยืนยันที่อยู่อีเมลของคุณ จากนั้นกลับมาที่นี่และคลิกปุ่ม ปรับใช้กับ 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 ที่จำเป็นสำหรับการเรียกใช้แอป
จากนั้นสร้างตัวแปรสภาพแวดล้อมที่มี Cloudant URL ของคุณ
# Cloudant URL
export SSS_CLOUDANT_URL= ' https://<USERNAME>:<PASSWORD>@<HOSTNAME> '
แทนที่ตัวยึดตำแหน่ง USERNAME
, PASSWORD
และ HOSTNAME
สำหรับรายละเอียดบัญชี Cloudant ของคุณเอง
จากนั้นเรียกใช้:
node app.js
Simple Search Service ใช้ Etcd เพื่อค้นหาและใช้บริการ Simple อื่นๆ ของเราเพื่อขยายและปรับปรุงบริการ
บริการอื่น ๆ ที่มีให้กับ Simple Search Service ได้แก่:
การเปิดใช้งาน Service Registry จำเป็นต้องมีการตั้งค่าตัวแปรสภาพแวดล้อม ETCD_URL
นี่ควรเป็น URL ของอินสแตนซ์ Etcd ของคุณ รวมถึงข้อมูลการตรวจสอบสิทธิ์ HTTP พื้นฐาน
export ETCD_URL='http://username:[email protected]'
หากเปิดใช้งานรีจิสทรีบริการ บริการใดๆ ที่ค้นพบจะแสดงบนหน้าบริการ โดยมีการสลับเพื่อเปิดหรือปิดใช้งานบริการเหล่านี้
เมื่อเปิดใช้งานบริการเหล่านี้จะถูกรวมเข้ากับ Simple Search Service โดยอัตโนมัติ
หากคุณได้อัปโหลดเนื้อหาของคุณไปยัง Simple Search Service แต่ตอนนี้ต้องการให้เฉพาะจุดสิ้นสุด /search
เท่านั้นที่เปิดเผยต่อสาธารณะ คุณสามารถเปิดใช้งาน "โหมดล็อคดาวน์" ได้
เพียงตั้งค่าตัวแปรสภาพแวดล้อมที่เรียกว่า LOCKDOWN
ให้เป็น true
ก่อนเรียกใช้ Simple Search Service:
export LOCKDOWN=true
node app.js
หรือตั้งค่าตัวแปรสภาพแวดล้อมที่กำหนดเองใน Bluemix
เมื่อตรวจพบโหมดล็อคดาวน์ คำขอทางเว็บทั้งหมดจะได้รับการตอบสนอง 401 Unauthorised
ยกเว้นตำแหน่งข้อมูล /search
ซึ่งจะยังคงทำงานต่อไป วิธีนี้จะป้องกันไม่ให้ข้อมูลของคุณถูกแก้ไขจนกว่าจะปิดโหมดล็อคดาวน์อีกครั้ง โดยการเอาตัวแปรสภาพแวดล้อมออก
หากคุณต้องการเข้าถึง Simple Search Service ในขณะที่อยู่ในโหมดล็อค คุณสามารถเปิดใช้งานการรับรองความถูกต้อง HTTP พื้นฐานได้โดยตั้งค่าตัวแปรสภาพแวดล้อมเพิ่มเติมอีกสองตัว:
SSS_LOCKDOWN_USERNAME
SSS_LOCKDOWN_PASSWORD
เมื่อตั้งค่าเหล่านี้แล้ว คุณจะข้ามโหมดล็อกดาวน์ได้โดยระบุชื่อผู้ใช้และรหัสผ่านที่ตรงกัน หากคุณเข้าถึง UI เบราว์เซอร์ของคุณจะแจ้งให้คุณทราบรายละเอียดเหล่านี้ หากคุณต้องการเข้าถึง API คุณสามารถระบุชื่อผู้ใช้และรหัสผ่านเป็นส่วนหนึ่งของคำขอของคุณได้:
curl -X GET ' http://<yourdomain>/row/4dac2df712704b397f1b64a1c8e25033 ' --user < username > : < password >
Simple Search Service มี API ที่ช่วยให้คุณสามารถจัดการข้อมูลของคุณนอก UI ที่ให้มาได้ ใช้สิ่งนี้เพื่อรวม SImple Search Service เข้ากับแอปพลิเคชันของคุณ
การค้นหาจัดทำโดยจุดสิ้นสุด 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 ที่ไม่ซ้ำกัน ซึ่งอยู่ในช่อง _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 License เวอร์ชัน 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้ไฟล์นี้ได้เว้นแต่จะเป็นไปตามใบอนุญาต คุณสามารถขอรับสำเนาใบอนุญาตได้ที่
http://www.apache.org/licenses/LICENSE-2.0
เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ที่เผยแพร่ภายใต้ใบอนุญาตนี้จะถูกแจกจ่าย "ตามที่เป็น" โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อจำกัดภายใต้ใบอนุญาต