สคีมาของ Google Cloud Search คือโครงสร้าง JSON ที่กำหนด ออบเจ็กต์ พร็อพเพอร์ตี้ และตัวเลือกที่จะใช้ในการจัดทำดัชนีและการค้นหาข้อมูลของคุณ เครื่องมือเชื่อมต่อเนื้อหาจะอ่านข้อมูลจากที่เก็บ และอิงตาม แบบแผนที่ลงทะเบียน โครงสร้าง และจัดทำดัชนีข้อมูล
คุณสร้างสคีมาได้โดยการระบุออบเจ็กต์สคีมา JSON ให้กับ API จากนั้นลงทะเบียน คุณต้องลงทะเบียนออบเจ็กต์สคีมา สำหรับที่เก็บแต่ละแห่งก่อนที่จะจัดทำดัชนีข้อมูลได้
เอกสารนี้ครอบคลุมพื้นฐานการสร้างสคีมา สำหรับข้อมูลเกี่ยวกับวิธี เพื่อปรับแต่งสคีมาเพื่อปรับปรุงประสบการณ์การค้นหา โปรดไปที่ ปรับปรุงคุณภาพการค้นหา
สร้างสคีมา
ขั้นตอนในการสร้างสคีมาของ Cloud Search มีดังนี้
- ระบุพฤติกรรมของผู้ใช้ที่คาดหวัง
- เริ่มต้นแหล่งข้อมูล
- สร้างสคีมา
- ตัวอย่างสคีมาที่สมบูรณ์
- ลงทะเบียนสคีมา
- จัดทำดัชนีข้อมูล
- ทดสอบสคีมา
- ปรับแต่งสคีมา
ระบุพฤติกรรมของผู้ใช้ที่คาดหวัง
การคาดเดาประเภทคำค้นหาของผู้ใช้จะช่วยกำหนดทิศทางกลยุทธ์ของคุณ สำหรับการสร้างสคีมา
ตัวอย่างเช่น เมื่อออกข้อความค้นหาสำหรับฐานข้อมูลภาพยนตร์ คุณอาจคาดว่า ผู้ใช้ที่ค้นหา เช่น "ขอดูภาพยนตร์ทั้งหมดที่นำแสดงโดยโรเบิร์ต เรดฟอร์ด" สคีมาของคุณจึงต้องสนับสนุนผลการค้นหาตาม "ภาพยนตร์ทั้งหมดที่มี นักแสดงที่เจาะจง"
หากต้องการกําหนดสคีมาเพื่อให้สอดคล้องกับรูปแบบพฤติกรรมของผู้ใช้ ให้พิจารณา ทำงานเหล่านี้:
- ประเมินชุดคำค้นหาที่ต้องการที่หลากหลายจากผู้ใช้ต่างๆ
- ระบุออบเจ็กต์ที่อาจใช้ในการค้นหา ออบเจ็กต์เป็นไปตามตรรกะ ชุดข้อมูลที่เกี่ยวข้องกัน เช่น ภาพยนตร์ในฐานข้อมูลของภาพยนตร์
- ระบุคุณสมบัติและค่าที่เป็นส่วนประกอบของออบเจ็กต์และอาจเป็น ที่ใช้ในการค้นหา พร็อพเพอร์ตี้คือแอตทริบิวต์ที่จัดทำดัชนีได้ของออบเจ็กต์ ซึ่งอาจมีค่าพื้นฐานหรือวัตถุอื่นๆ เช่น ออบเจ็กต์ภาพยนตร์อาจมีพร็อพเพอร์ตี้ เช่น ชื่อภาพยนตร์และ เป็นค่าพื้นฐาน วัตถุภาพยนตร์อาจมี วัตถุต่างๆ เช่น นักแสดง ที่มีคุณสมบัติเป็นของตัวเอง เช่น ชื่อหรือบทบาท
- ระบุค่าที่ถูกต้องสำหรับพร็อพเพอร์ตี้ ค่าคือข้อมูลจริง สำหรับพร็อพเพอร์ตี้ ตัวอย่างเช่น ชื่อภาพยนตร์ในฐานข้อมูลของคุณอาจเป็น "Raiders of the Lost Ark"
- กำหนดตัวเลือกการจัดเรียงและการจัดอันดับที่ผู้ใช้ของคุณต้องการ ตัวอย่างเช่น เมื่อค้นหาภาพยนตร์ ผู้ใช้อาจต้องการจัดเรียงตามลำดับเวลาและจัดอันดับ ระดับผู้ชม และไม่จำเป็นต้องจัดเรียงตามตัวอักษรของชื่อ
- (ไม่บังคับ) พิจารณาว่าพร็อพเพอร์ตี้รายการใดรายการหนึ่งของคุณแสดงถึง บริบทที่อาจมีการดำเนินการค้นหา เช่น ผู้ใช้ บทบาทงานหรือ เพื่อให้ระบบสามารถให้คำแนะนำในการเติมข้อความอัตโนมัติโดยอิงตาม บริบท ตัวอย่างเช่น สำหรับคนที่ค้นหาฐานข้อมูลของภาพยนตร์ ผู้ใช้อาจ สนใจภาพยนตร์บางเรื่องเท่านั้น ผู้ใช้จะให้คำจำกัดความ ประเภทที่ต้องการค้นหาได้ ซึ่งอาจเป็นส่วนหนึ่งของผู้ใช้ โปรไฟล์ จากนั้น เมื่อผู้ใช้เริ่มพิมพ์คำค้นหาภาพยนตร์ เฉพาะภาพยนตร์ในประเภทที่ต้องการ เช่น "ภาพยนตร์แอ็กชัน" แนะนำเป็น ของคำแนะนำที่เติมข้อความอัตโนมัติ
- สร้างรายการออบเจ็กต์ พร็อพเพอร์ตี้ และค่าตัวอย่างเหล่านี้ที่สามารถวัด ที่ใช้ในการค้นหา (สำหรับรายละเอียดเกี่ยวกับวิธีใช้รายการนี้ โปรดดูส่วนกำหนดตัวเลือกโอเปอเรเตอร์)
เริ่มต้นแหล่งข้อมูล
แหล่งข้อมูลแสดงถึงข้อมูลจากที่เก็บที่ได้รับการจัดทำดัชนี และจัดเก็บไว้ใน Google Cloud หากต้องการทราบวิธีการเริ่มต้นแหล่งข้อมูล อ้างถึง จัดการแหล่งข้อมูลของบุคคลที่สาม
ระบบจะแสดงผลการค้นหาของผู้ใช้จากแหล่งข้อมูล เมื่อผู้ใช้คลิกที่ ผลการค้นหา Cloud Search จะนำผู้ใช้ไปยังรายการจริงโดยใช้ URL ที่ระบุในคำขอจัดทำดัชนี
กำหนดออบเจ็กต์
หน่วยพื้นฐานของข้อมูลในสคีมาคือออบเจ็กต์ หรือที่เรียกว่า "สคีมา ของออบเจ็กต์" ซึ่งเป็นโครงสร้างเชิงตรรกะของข้อมูล ในฐานข้อมูลของภาพยนตร์ โครงสร้างเชิงตรรกะของข้อมูลคือ "ภาพยนตร์" วัตถุอื่นอาจเป็น "คน" ถึง ซึ่งแสดงถึงนักแสดงและทีมงานที่มีส่วนเกี่ยวข้องในภาพยนตร์
ออบเจ็กต์ทุกรายการในสคีมาจะมีชุดพร็อพเพอร์ตี้หรือแอตทริบิวต์ที่ อธิบายวัตถุ เช่น ชื่อและระยะเวลาของภาพยนตร์ และวันเกิดของบุคคล คุณสมบัติของวัตถุอาจรวมถึงค่าดั้งเดิม ค่า หรือวัตถุอื่นๆ
รูปที่ 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
ที่มีพร็อพเพอร์ตี้ 2 รายการ ได้แก่ 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
อย่างน้อย 1 รายการ เช่นdisplayLabel
ในข้อมูลโค้ดก่อนหน้า
name
ของพร็อพเพอร์ตี้ต้องไม่ซ้ำกันภายในออบเจ็กต์ที่มี
แต่สามารถใช้ชื่อเดียวกันในออบเจ็กต์และออบเจ็กต์ย่อยอื่นๆ
ในรูปที่ 1 มีการกำหนดชื่อและวันที่เผยแพร่ของภาพยนตร์ไว้ 2 ครั้ง คือ
1 ครั้งในออบเจ็กต์ movie
และอีกครั้งในออบเจ็กต์ย่อย filmography
ของ
ออบเจ็กต์ person
รายการ สคีมานี้ใช้ช่อง movieTitle
ซ้ำ
เพื่อให้สคีมาสามารถรองรับพฤติกรรมการค้นหา 2 ประเภทดังนี้
- แสดงผลการค้นหาภาพยนตร์เมื่อผู้ใช้ค้นหาชื่อภาพยนตร์
- แสดงผลการค้นหาบุคคลเมื่อผู้ใช้ค้นหาชื่อภาพยนตร์ ที่นักแสดงคนนั้นเล่นด้วย
ในทํานองเดียวกัน สคีมาจะใช้ช่อง releaseDate
ซ้ำเนื่องจากมีช่องเดียวกัน
หมายถึงช่อง movieTitle
ทั้ง 2 ช่อง
ในการพัฒนาสคีมาของคุณเอง ลองพิจารณาความสัมพันธ์ของที่เก็บของคุณ ที่มีข้อมูลที่คุณต้องการประกาศมากกว่า 1 ครั้งในสคีมา
เพิ่มตัวเลือกที่เข้าใจได้โดยไม่จำเป็นต้องเข้าใจการพิมพ์
PropertyDefinition แสดงรายการตัวเลือกฟังก์ชันการค้นหาทั่วไปที่มีอยู่ในพร็อพเพอร์ตี้ทั้งหมด ข้อมูลทุกประเภท
isReturnable
- ระบุว่าพร็อพเพอร์ตี้ระบุข้อมูลที่ควรจะเป็นหรือไม่ ซึ่งแสดงในผลการค้นหาผ่าน API ข้อความค้นหา ภาพยนตร์ตัวอย่างทั้งหมด พร็อพเพอร์ตี้นั้นแสดงผลได้ สามารถใช้พร็อพเพอร์ตี้ที่คืนสินค้าไม่ได้สำหรับการค้นหา หรือจัดอันดับผลการค้นหาโดยไม่แสดงแก่ผู้ใช้isRepeatable
- ระบุว่าพร็อพเพอร์ตี้นั้นอนุญาตให้มีหลายค่าหรือไม่ สำหรับ เช่น ภาพยนตร์มีวันที่เผยแพร่เพียงวันเดียว แต่มีนักแสดงหลายคนได้isSortable
- ระบุว่าพร็อพเพอร์ตี้นี้ใช้จัดเรียงได้ ช่วงเวลานี้ ไม่สามารถเป็น "จริง" สำหรับพร็อพเพอร์ตี้ที่ซ้ำกันได้ เช่น ผลการค้นหาภาพยนตร์ อาจจัดเรียงตามวันที่เผยแพร่หรือการจัดประเภทผู้ชมisFacetable
- ระบุว่าสามารถใช้พร็อพเพอร์ตี้ในการสร้างข้อมูลประกอบ ข้อมูลประกอบใช้เพื่อปรับแต่งการค้นหา ผลลัพธ์ขั้นต้น จากนั้นเพิ่มเกณฑ์หรือข้อมูลประกอบ เพื่อปรับแต่ง ผลลัพธ์ ตัวเลือกนี้ไม่สามารถเป็นจริงสำหรับพร็อพเพอร์ตี้ที่มีประเภทเป็นออบเจ็กต์และisReturnable
ต้องเป็น "จริง" เพื่อตั้งค่าตัวเลือกนี้ สุดท้าย ตัวเลือกนี้มีเพียง รองรับคุณสมบัติ enum, บูลีน และข้อความ ตัวอย่างเช่น ในสคีมาตัวอย่าง เราอาจสร้างgenre
,actorName
,userRating
และmpaaRating
Facetable เพื่ออนุญาต ใช้สำหรับการปรับแต่งผลการค้นหาแบบอินเทอร์แอกทีฟisWildcardSearchable
ระบุว่าผู้ใช้สามารถใช้สัญลักษณ์การค้นหาสำหรับ พร็อพเพอร์ตี้นี้ ตัวเลือกนี้ใช้ได้เฉพาะกับคุณสมบัติของข้อความเท่านั้น ไวลด์การ์ด การค้นหาจะทำงานในฟิลด์ข้อความได้ ขึ้นอยู่กับค่าที่ตั้งไว้ในฟิลด์ exactMatchWithOperator หากตั้งค่าexactMatchWithOperator
เป็นtrue
ค่าข้อความจะแปลงเป็นโทเค็นเป็นค่าอะตอม 1 ค่า และการค้นหาโดยใช้สัญลักษณ์ตัวแทน ที่ดำเนินการกับเนื้อหานั้น เช่น หากค่าข้อความคือscience-fiction
มีคำค้นหาไวลด์การ์ดscience-*
ที่ตรงกัน หากตั้งค่าexactMatchWithOperator
เป็นfalse
ระบบจะแปลงค่าข้อความเป็นโทเค็นและจะใช้การค้นหาโดยใช้สัญลักษณ์ตัวแทนกับ แต่ละรายการ เช่น หากค่าข้อความคือ "science-fition" ไวลด์การ์ด การค้นหาsci*
หรือfi*
ตรงกับรายการ แต่science-*
ไม่ตรงกับรายการ
พารามิเตอร์ฟังก์ชันการค้นหาทั่วไปเหล่านี้เป็นค่าบูลีนทั้งหมด พวกเขา
ทั้งหมดมีค่าเริ่มต้นเป็น false
และต้องตั้งค่าเป็น true
ที่จะนำไปใช้
ตารางต่อไปนี้แสดงพารามิเตอร์บูลีนที่ตั้งค่าเป็น true
สำหรับพร็อพเพอร์ตี้ทั้งหมดของออบเจ็กต์ movie
ดังนี้
พร็อพเพอร์ตี้ | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
จริง | จริง | |||
releaseDate |
จริง | จริง | |||
genre |
จริง | จริง | จริง | ||
duration |
จริง | ||||
actorName |
จริง | จริง | จริง | จริง | |
userRating |
จริง | จริง | |||
mpaaRating |
จริง | จริง |
ทั้ง genre
และ actorName
ตั้งค่า isRepeatable
เป็น true
เนื่องจากภาพยนตร์อาจมี
มากกว่า 1 ประเภทและมักมี
นักแสดงมากกว่า 1 คน ไม่สามารถจัดเรียงพร็อพเพอร์ตี้ได้หากเป็นพร็อพเพอร์ตี้ที่ทำซ้ำได้
หรืออยู่ในออบเจ็กต์ย่อยที่ซ้ำได้
กำหนดประเภท
PropertyDefinition
ส่วนการอ้างอิงจะแสดง xxPropertyOptions
หลายรายการโดยที่ xx
เป็นประเภทที่เฉพาะเจาะจง
เช่น boolean
หากต้องการตั้งค่าประเภทข้อมูลของพร็อพเพอร์ตี้ คุณต้องกำหนด
ออบเจ็กต์ประเภทข้อมูลที่เหมาะสม การกำหนดออบเจ็กต์ประเภทข้อมูลสำหรับพร็อพเพอร์ตี้
กำหนดประเภทข้อมูลของพร็อพเพอร์ตี้นั้น ตัวอย่างเช่น การกำหนด
textPropertyOptions
สำหรับพร็อพเพอร์ตี้ movieTitle
บ่งชี้ว่าภาพยนตร์
ชื่อเป็นข้อความประเภท ข้อมูลโค้ดต่อไปนี้แสดงพร็อพเพอร์ตี้ movieTitle
โดยตั้งค่าประเภทข้อมูลด้วย textPropertyOptions
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
พร็อพเพอร์ตี้หนึ่งมีข้อมูลเชื่อมโยงได้เพียงประเภทเดียว เช่น ในภาพยนตร์ของเรา
สคีมา releaseDate
ต้องเป็นวันที่เท่านั้น (เช่น 2016-01-13
) หรือสตริง
(เช่น January 13, 2016
) แต่ไม่ใช่ทั้ง 2 อย่าง
นี่คือออบเจ็กต์ประเภทข้อมูลที่ใช้ระบุประเภทข้อมูลสำหรับข้อมูล ในสคีมาภาพยนตร์ตัวอย่าง
พร็อพเพอร์ตี้ | ออบเจ็กต์ประเภทข้อมูล |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
ประเภทข้อมูลที่คุณเลือกสําหรับพร็อพเพอร์ตี้จะขึ้นอยู่กับ Use Case ที่คาดไว้
ในสถานการณ์ที่จินตนาการไว้ของสคีมาภาพยนตร์นี้ ผู้ใช้คาดหวังว่า
ต้องการจัดเรียงผลการค้นหาตามลำดับเวลา ดังนั้น 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"
}
},
...
}
ทุก operatorOptions
มี operatorName
เช่น title
สำหรับ
movieTitle
ชื่อโอเปอเรเตอร์คือโอเปอเรเตอร์การค้นหาสำหรับพร็อพเพอร์ตี้ ต
โอเปอเรเตอร์การค้นหาคือพารามิเตอร์จริงที่คุณคาดว่าผู้ใช้จะใช้
เมื่อจำกัดขอบเขตการค้นหา ตัวอย่างเช่น ในการค้นหาภาพยนตร์ตามชื่อ
ผู้ใช้จะพิมพ์ title:movieName
โดยที่ movieName
คือชื่อของภาพยนตร์
ชื่อโอเปอเรเตอร์ไม่จำเป็นต้องเหมือนกับชื่อพร็อพเพอร์ตี้ แต่ คุณควรใช้ชื่อโอเปอเรเตอร์ที่แสดงถึงคำทั่วไปที่ใช้ ตามผู้ใช้ในองค์กร ตัวอย่างเช่น หากผู้ใช้ของคุณชอบคำนี้ "ชื่อ" แทน "title" ชื่อภาพยนตร์ ชื่อโอเปอเรเตอร์ควรเป็น ตั้งค่าเป็น "name"
คุณสามารถใช้ชื่อโอเปอเรเตอร์เดียวกันสำหรับพร็อพเพอร์ตี้หลายรายการ
จะแปลค่าเป็นประเภทเดียวกัน เมื่อใช้ชื่อโอเปอเรเตอร์ที่ใช้ร่วมกันระหว่าง
คำค้นหา ระบบจะดึงข้อมูลพร็อพเพอร์ตี้ทั้งหมดที่ใช้ชื่อโอเปอเรเตอร์ดังกล่าว ตัวอย่างเช่น
สมมติว่าออบเจ็กต์ภาพยนตร์มี plotSummary
และ plotSynopsis
พร็อพเพอร์ตี้ และแต่ละพร็อพเพอร์ตี้เหล่านี้มี operatorName
เป็น plot
อาส
ตราบใดที่คุณสมบัติทั้งสองนี้เป็นข้อความ (textPropertyOptions
)
การค้นหาโดยใช้โอเปอเรเตอร์การค้นหา plot
จะดึงข้อมูลทั้งคู่
นอกเหนือจาก operatorName
พร็อพเพอร์ตี้ที่จัดเรียงได้
lessThanOperatorName
และ greaterThanOperatorName
ใน operatorOptions
ผู้ใช้สามารถใช้ตัวเลือกเหล่านี้เพื่อสร้างการสืบค้นโดยเปรียบเทียบกับ
ค่าที่ส่ง
สุดท้าย textOperatorOptions
มีช่อง exactMatchWithOperator
ใน
operatorOptions
หากคุณ
ตั้งค่า exactMatchWithOperator
เป็น true
สตริงการค้นหาต้อง
ตรงกับค่าของพร็อพเพอร์ตี้ทั้งหมด ไม่ใช่เฉพาะในข้อความเท่านั้น
ค่าข้อความจะถือว่าเป็นค่าอะตอม 1 ค่าในการค้นหาโอเปอเรเตอร์และ
ข้อมูลประกอบที่ตรงกัน
เช่น ลองจัดทำดัชนีออบเจ็กต์หนังสือหรือภาพยนตร์ด้วยพร็อพเพอร์ตี้ประเภท
ประเภทข่าวอาจรวมถึง "นิยายวิทยาศาสตร์" "วิทยาศาสตร์" และ "เรื่องแต่ง" ด้วย
exactMatchWithOperator
ได้รับการตั้งค่าเป็น false
หรือละเว้น
ค้นหาแนวเพลงหรือ
กำลังเลือกช่องทำเครื่องหมาย "วิทยาศาสตร์" หรือ "เรื่องแต่ง" ข้อมูลประกอบก็จะ
แสดงผลการค้นหาสำหรับ "นิยายวิทยาศาสตร์" เนื่องจากข้อความถูกแปลงข้อมูลเป็นโทเค็นและ
"วิทยาศาสตร์" และ "เรื่องแต่ง" มีโทเค็นอยู่ใน "นิยายวิทยาศาสตร์"
เมื่อexactMatchWithOperator
คือtrue
ข้อความนั้นจะถือว่าเป็นโทเค็นเดียว ดังนั้นทั้ง 2 อย่าง
"วิทยาศาสตร์" หรือ "นิยาย" ตรงกับ "Science-Fiction"
(ไม่บังคับ) เพิ่มส่วน displayOptions
ส่วน displayOptions
จะมีหรือไม่ก็ได้ในตอนท้าย
propertyDefinition
ส่วนนี้ประกอบด้วยสตริง displayLabel
1 รายการ
displayLabel
คือป้ายกำกับข้อความที่แนะนำและใช้ง่าย
สำหรับพร็อพเพอร์ตี้ หากมีการกําหนดค่าพร็อพเพอร์ตี้สําหรับการแสดงผลโดยใช้
ObjectDisplayOptions,
ป้ายกำกับนี้จะแสดงด้านหน้าพร็อพเพอร์ตี้ หากมีการกําหนดค่าพร็อพเพอร์ตี้
สำหรับดิสเพลย์และ displayLabel
ไม่ได้กำหนด จะมีเพียงค่าพร็อพเพอร์ตี้เท่านั้น
แสดงอยู่
ข้อมูลโค้ดต่อไปนี้แสดงพร็อพเพอร์ตี้ movieTitle
ที่มี displayLabel
ตั้งค่าเป็น "ชื่อ"
{
"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 สำหรับภาพยนตร์ 1 เรื่อง ซึ่งจะมีลักษณะดังนี้
{
"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
ตรงกับวัตถุอย่างไร
ชื่อคำจำกัดความในสคีมา การจับคู่ 2 ค่านี้ทำให้ Cloud Search ทราบว่า
ออบเจ็กต์สคีมาที่จะใช้ระหว่างการจัดทำดัชนี
โปรดทราบด้วยว่าวิธีการจัดทําดัชนีของพร็อพเพอร์ตี้สคีมา releaseDate
เป็นอย่างไร
พร็อพเพอร์ตี้ย่อยของ year
, month
และ day
ที่รับช่วงมาเนื่องจาก
ถือเป็นข้อมูล date
ประเภทผ่านการใช้ datePropertyOptions
ในการกำหนด
แต่เนื่องจากไม่ได้กำหนด year
, month
และ day
ในสคีมาไว้
ค้นหาพร็อพเพอร์ตี้รายการใดรายการหนึ่งไม่ได้ (เช่น year
) แยกกัน
และอธิบายด้วยว่าพร็อพเพอร์ตี้ที่ทำซ้ำได้ actorName
ได้รับการจัดทำดัชนีอย่างไรโดยใช้รายการ
มูลค่า
การระบุปัญหาที่อาจเกิดขึ้นกับการจัดทำดัชนี
ปัญหาที่พบบ่อยที่สุด 2 ประการเกี่ยวกับสคีมาและการจัดทำดัชนี ได้แก่
คำขอจัดทำดัชนีของคุณมีออบเจ็กต์สคีมาหรือชื่อพร็อพเพอร์ตี้ที่ไม่ใช่ ที่ลงทะเบียนไว้กับบริการสคีมาแล้ว ปัญหานี้ทำให้พร็อพเพอร์ตี้หรือออบเจ็กต์ ที่จะละเว้น
คำขอจัดทำดัชนีของคุณมีพร็อพเพอร์ตี้ที่มีค่าประเภทแตกต่างจากประเภท ซึ่งลงทะเบียนไว้ในสคีมา ปัญหานี้ทำให้ Cloud Search แสดงผลข้อผิดพลาด ในช่วงการจัดทำดัชนี
ทดสอบสคีมาด้วยคำค้นหาหลายประเภท
ก่อนลงทะเบียนสคีมาสำหรับที่เก็บข้อมูลที่ใช้งานจริงขนาดใหญ่ พิจารณาทดสอบกับที่เก็บข้อมูลทดสอบขนาดเล็ก การทดสอบด้วย ที่เก็บทดสอบขนาดเล็ก ช่วยให้คุณปรับเปลี่ยนสคีมาได้อย่างรวดเร็ว และลบข้อมูลที่จัดทำดัชนีแล้ว โดยไม่ส่งผลกระทบต่อ ดัชนีที่ใหญ่กว่าหรือดัชนีเวอร์ชันที่ใช้งานจริงที่มีอยู่ สำหรับที่เก็บข้อมูลทดสอบ ให้สร้าง ACL ที่ให้สิทธิ์เฉพาะผู้ใช้ทดสอบเพื่อให้ผู้ใช้รายอื่นไม่เห็นข้อมูลนี้ ในผลการค้นหา
หากต้องการสร้างอินเทอร์เฟซการค้นหาเพื่อตรวจสอบความถูกต้องของคำค้นหา โปรดดู อินเทอร์เฟซการค้นหา
ส่วนนี้ประกอบด้วยตัวอย่างการค้นหาต่างๆ มากมายที่คุณอาจใช้เพื่อทดสอบ สคีมาภาพยนตร์
ทดสอบด้วยคำค้นหาทั่วไป
คำค้นหาทั่วไปจะแสดงรายการทั้งหมดในแหล่งข้อมูลที่มี สตริง เมื่อใช้อินเทอร์เฟซการค้นหา คุณอาจเรียกใช้คำค้นหาทั่วไปกับภาพยนตร์ แหล่งข้อมูลโดยพิมพ์คำว่า "titanic" และกด Return ทั้งหมด ภาพยนตร์ที่มีคำว่า "ไททานิก" ควรจะปรากฏในผลการค้นหา
ทดสอบกับโอเปอเรเตอร์
การเพิ่มโอเปอเรเตอร์ลงในการค้นหาจะจำกัดผลลัพธ์ให้เหลือเพียงรายการที่ตรงกับคำค้นหานั้น
ค่าโอเปอเรเตอร์ เช่น คุณอาจต้องการใช้โอเปอเรเตอร์ actor
เพื่อค้นหา
ภาพยนตร์ทั้งหมด
ที่มีนักแสดงคนใดคนหนึ่ง เมื่อใช้อินเทอร์เฟซการค้นหา คุณจะสามารถดำเนินการ
คุณจะค้นหาโอเปอเรเตอร์นี้ได้ง่ายๆ โดยพิมพ์คู่ operator=value เช่น
"actor:Zane" และกด "actor:Zane" ภาพยนตร์ทั้งหมดที่มี Zane เป็นนักแสดง
ควรจะปรากฏในผลการค้นหา
ปรับแต่งสคีมาของคุณ
หลังจากมีการใช้สคีมาและข้อมูลแล้ว ให้ตรวจสอบสิ่งที่ใช้งานได้ต่อไป และทำงานกับผู้ใช้ไม่ได้ คุณควรพิจารณาปรับสคีมาในสถานการณ์ต่อไปนี้
- การจัดทําดัชนีช่องที่ไม่เคยมีการจัดทำดัชนีมาก่อน ตัวอย่างเช่น ผู้ใช้ของคุณ อาจค้นหาภาพยนตร์ซ้ำๆ โดยใช้ชื่อผู้กำกับ คุณจึงอาจ ปรับสคีมาเพื่อรองรับชื่อผู้อำนวยการเป็นโอเปอเรเตอร์
- การเปลี่ยนชื่อโอเปอเรเตอร์การค้นหาตามความคิดเห็นของผู้ใช้ ชื่อโอเปอเรเตอร์คือ ควรใช้งานง่าย หากผู้ใช้ "จำ" อย่างสม่ำเสมอ ผิด คุณอาจพิจารณาเปลี่ยนชื่อ
การจัดทำดัชนีอีกครั้งหลังการเปลี่ยนแปลงสคีมา
การเปลี่ยนค่าต่อไปนี้ในสคีมาไม่กำหนดให้คุณต้อง จัดทำดัชนีข้อมูลอีกครั้ง คุณเพียงแค่ส่ง UpdateSchema และดัชนีของคุณจะยังคงทำงานต่อไป:
- ชื่อโอเปอเรเตอร์
- จำนวนเต็มต่ำสุดและสูงสุด
- การจัดอันดับแบบเรียงตามลำดับจำนวนเต็มและ enum
- ตัวเลือกความใหม่
- ตัวเลือกการแสดงผล
สำหรับการเปลี่ยนแปลงต่อไปนี้ ข้อมูลที่จัดทำดัชนีไว้ก่อนหน้านี้จะยังคงทำงานต่อไป ตามสคีมาที่ลงทะเบียนไว้ก่อนหน้านี้ อย่างไรก็ตาม คุณจะต้องจัดทำดัชนีอีกครั้ง รายการที่มีอยู่เพื่อดูการเปลี่ยนแปลงตามสคีมาที่อัปเดต หากมี การเปลี่ยนแปลง:
- การเพิ่มหรือนําพร็อพเพอร์ตี้หรือออบเจ็กต์ใหม่ออก
- กำลังเปลี่ยน
isReturnable
,isFacetable
หรือisSortable
จากfalse
เป็นtrue
คุณควรตั้งค่า isFacetable
หรือ isSortable
เป็น true
เฉพาะเมื่อคุณมี
กรณีการใช้งานและความต้องการที่ชัดเจน
และสุดท้าย เมื่อคุณอัปเดตสคีมาโดยทำเครื่องหมายพร็อพเพอร์ตี้ isSuggestable
คุณจะต้องจัดทำดัชนีข้อมูลใหม่ ซึ่งทำให้เกิดความล่าช้าในการใช้การเติมข้อความอัตโนมัติ
พร็อพเพอร์ตี้นั้น
การเปลี่ยนแปลงพร็อพเพอร์ตี้ที่ไม่อนุญาต
ไม่อนุญาตให้เปลี่ยนแปลงสคีมาบางอย่าง แม้ว่าคุณจะจัดทำดัชนีข้อมูลอีกครั้งแล้วก็ตาม เนื่องจากการเปลี่ยนแปลงดังกล่าว จะทำให้ดัชนีเสียหายหรือสร้างผลการค้นหาที่ไม่ดีหรือไม่สม่ำเสมอ เหล่านี้ รวมการเปลี่ยนแปลงกับ:
- ประเภทข้อมูลพร็อพเพอร์ตี้
- ชื่อพร็อพเพอร์ตี้
- การตั้งค่า
exactMatchWithOperator
- การตั้งค่า
retrievalImportance
อย่างไรก็ตาม ก็มีวิธีการหลีกเลี่ยงข้อจำกัดนี้
เปลี่ยนแปลงสคีมาที่ซับซ้อน
เพื่อหลีกเลี่ยงการเปลี่ยนแปลงที่อาจสร้างผลการค้นหาที่ไม่มีคุณภาพหรือการค้นหาที่ใช้งานไม่ได้ แต่ Cloud Search จะป้องกันการเปลี่ยนแปลงบางอย่างใน UpdateSchema หลังจากจัดทำดัชนีที่เก็บแล้ว เช่น ประเภทข้อมูลหรือ ไม่สามารถเปลี่ยนแปลงชื่อของพร็อพเพอร์ตี้ได้หลังจากที่ตั้งชื่อแล้ว การเปลี่ยนแปลงเหล่านี้ ไม่สามารถทำได้ผ่าน UpdateSchema แม้ว่าคุณจะจัดทำดัชนีข้อมูลอีกครั้งก็ตาม
ในกรณีที่คุณต้องทำการเปลี่ยนแปลงไม่ได้รับอนุญาตในบัญชี คุณสามารถทำการเปลี่ยนแปลงที่อนุญาตชุดหนึ่ง ซึ่งทำให้เกิด โดยทั่วไป เราจะต้องย้ายข้อมูลพร็อพเพอร์ตี้ที่ได้รับการจัดทำดัชนีก่อน จากคำจำกัดความออบเจ็กต์เก่าไปยังออบเจ็กต์ที่ใหม่กว่าแล้วส่ง คำขอจัดทำดัชนีที่ใช้เฉพาะพร็อพเพอร์ตี้ที่ใหม่กว่า
ขั้นตอนต่อไปนี้แสดงวิธีเปลี่ยนประเภทข้อมูลหรือชื่อของพร็อพเพอร์ตี้
- เพิ่มพร็อพเพอร์ตี้ใหม่ลงในคำจำกัดความของออบเจ็กต์ในสคีมา ใช้ จากพร็อพเพอร์ตี้ที่คุณต้องการเปลี่ยนแปลง
- ออก UpdateSchema ที่มีการกำหนดใหม่ อย่าลืมส่งสคีมาทั้งหมด ซึ่งรวมถึง ทั้งพร็อพเพอร์ตี้ใหม่และเก่าในคำขอ
ทดแทนดัชนีจากที่เก็บข้อมูล หากต้องการทดแทนดัชนี ให้ส่งทั้งหมด คำขอให้จัดทำดัชนีโดยใช้พร็อพเพอร์ตี้ใหม่ แต่ไม่ใช่พร็อพเพอร์ตี้ พร็อพเพอร์ตี้เก่า เนื่องจากจะทำให้เกิดการนับคู่ข้อความค้นหาซ้ำ
- ในระหว่างการทดแทนการจัดทำดัชนี ให้ตรวจสอบพร็อพเพอร์ตี้ใหม่และ เป็นค่าเริ่มต้นของพร็อพเพอร์ตี้เดิมเพื่อหลีกเลี่ยงลักษณะการทำงานที่ไม่สอดคล้องกัน
- หลังจากโฆษณาทดแทนเสร็จสมบูรณ์แล้ว ให้เรียกใช้การค้นหาทดสอบเพื่อยืนยัน
ลบพร็อพเพอร์ตี้เดิม ออกรายการอื่น UpdateSchema คำขอที่ไม่มีชื่อพร็อพเพอร์ตี้เก่าและเลิกใช้พร็อพเพอร์ตี้เก่า ชื่อในคำขอจัดทำดัชนีในอนาคต
ย้ายข้อมูลการใช้งานพร็อพเพอร์ตี้เดิมไปยังพร็อพเพอร์ตี้ใหม่ ตัวอย่างเช่น หาก คุณเปลี่ยนชื่อพร็อพเพอร์ตี้จากผู้สร้างเป็นผู้เขียน คุณต้องอัปเดตคำค้นหา รหัสเพื่อใช้ผู้เขียนที่ก่อนหน้านี้อ้างอิงถึงผู้สร้าง
Cloud Search จะเก็บบันทึกพร็อพเพอร์ตี้หรือออบเจ็กต์ที่ลบไปแล้วเป็นเวลา 30 วัน เพื่อป้องกันการใช้ซ้ำซึ่งจะทำให้เกิดผลการจัดทำดัชนีที่ไม่คาดคิด ภายใน 30 วันดังกล่าว คุณควรย้ายข้อมูลจากการใช้งาน ออบเจ็กต์หรือพร็อพเพอร์ตี้ของคุณ ซึ่งรวมถึงการยกเว้นรายการเหล่านั้นจากคำขอดัชนีในอนาคต วิธีนี้ช่วยให้มั่นใจว่าหากในภายหลังคุณตัดสินใจจะคืนสิทธิพร็อพเพอร์ตี้นั้น หรือ คุณสามารถทำได้ด้วยวิธีที่รักษาความถูกต้องของดัชนีของคุณ
ทราบข้อจำกัดด้านขนาด
Cloud Search กำหนดขีดจำกัดขนาดของออบเจ็กต์และสคีมาของข้อมูลที่มีโครงสร้าง ขีดจำกัดเหล่านี้ ได้แก่
- จำนวนออบเจ็กต์ระดับบนสุดสูงสุดคือ 10 ออบเจ็กต์
- ความลึกสูงสุดของลำดับชั้นข้อมูลที่มีโครงสร้างคือ 10 ระดับ
- จำนวนช่องทั้งหมดในออบเจ็กต์จำกัดไว้ที่ 1,000 ช่อง ซึ่งรวมถึงจำนวนฟิลด์พื้นฐานกับผลรวมของจำนวน ในแต่ละออบเจ็กต์ที่ซ้อนอยู่
ขั้นตอนถัดไป
ขั้นตอนถัดไปที่คุณทำได้มีดังนี้
สร้างอินเทอร์เฟซการค้นหาเพื่อ ทดสอบสคีมาของคุณ
ปรับแต่งสคีมาเพื่อปรับปรุงคุณภาพการค้นหา
จัดโครงสร้างสคีมาเพื่อการแปลความหมายการค้นหาที่มีประสิทธิภาพสูงสุด
เรียนรู้วิธีการใช้ประโยชน์จาก
_dictionaryEntry
สคีมาที่จะกำหนด คำพ้องความหมายสำหรับคำที่ใช้กันโดยทั่วไปในบริษัทของคุณ วิธีใช้_dictionaryEntry
สคีมา, อ้างอิงถึง กำหนดคำพ้องความหมายสร้างเครื่องมือเชื่อมต่อ