สคีมาของ Google Cloud Search คือโครงสร้าง JSON ที่กำหนด ออบเจ็กต์ พร็อพเพอร์ตี้ และตัวเลือกที่จะใช้ในการจัดทำดัชนีและการค้นหาข้อมูลของคุณ เครื่องมือเชื่อมต่อเนื้อหาจะอ่านข้อมูลจากที่เก็บ และอิงตาม แบบแผนที่ลงทะเบียน โครงสร้าง และจัดทำดัชนีข้อมูล
คุณสร้างสคีมาได้โดยการระบุออบเจ็กต์สคีมา JSON ให้กับ API จากนั้นลงทะเบียน คุณต้องลงทะเบียนออบเจ็กต์สคีมา สำหรับที่เก็บแต่ละแห่งก่อนที่จะจัดทำดัชนีข้อมูลได้
เอกสารนี้ครอบคลุมพื้นฐานการสร้างสคีมา สำหรับข้อมูลเกี่ยวกับวิธี เพื่อปรับแต่งสคีมาเพื่อปรับปรุงประสบการณ์การค้นหา โปรดไปที่ ปรับปรุงคุณภาพการค้นหา
สร้างสคีมา
ขั้นตอนในการสร้างสคีมาของ Cloud Search มีดังนี้
- ระบุพฤติกรรมของผู้ใช้ที่คาดหวัง
- เริ่มต้นแหล่งข้อมูล
- สร้างสคีมา
- ตัวอย่างสคีมาที่สมบูรณ์
- ลงทะเบียนสคีมา
- จัดทำดัชนีข้อมูล
- ทดสอบสคีมา
- ปรับแต่งสคีมา
ระบุพฤติกรรมของผู้ใช้ที่คาดหวัง
การคาดเดาประเภทคำค้นหาของผู้ใช้จะช่วยกำหนดทิศทางกลยุทธ์ของคุณ สำหรับการสร้างสคีมา
ตัวอย่างเช่น เมื่อออกข้อความค้นหาสำหรับฐานข้อมูลภาพยนตร์ คุณอาจคาดว่า ผู้ใช้ที่ค้นหา เช่น "ขอดูภาพยนตร์ทั้งหมดที่นำแสดงโดยโรเบิร์ต เรดฟอร์ด" สคีมาของคุณจึงต้องสนับสนุนผลการค้นหาตาม "ภาพยนตร์ทั้งหมดที่มี นักแสดงที่เจาะจง"
หากต้องการกําหนดสคีมาเพื่อให้สอดคล้องกับรูปแบบพฤติกรรมของผู้ใช้ ให้พิจารณา ทำงานเหล่านี้:
- ประเมินชุดคำค้นหาที่ต้องการที่หลากหลายจากผู้ใช้ต่างๆ
- ระบุออบเจ็กต์ที่อาจใช้ในการค้นหา ออบเจ็กต์เป็นไปตามตรรกะ ชุดข้อมูลที่เกี่ยวข้องกัน เช่น ภาพยนตร์ในฐานข้อมูลของภาพยนตร์
- ระบุคุณสมบัติและค่าที่เป็นส่วนประกอบของออบเจ็กต์และอาจเป็น ที่ใช้ในการค้นหา พร็อพเพอร์ตี้คือแอตทริบิวต์ที่จัดทำดัชนีได้ของออบเจ็กต์ ซึ่งอาจมีค่าพื้นฐานหรือวัตถุอื่นๆ เช่น ออบเจ็กต์ภาพยนตร์อาจมีพร็อพเพอร์ตี้ เช่น ชื่อภาพยนตร์และ เป็นค่าพื้นฐาน วัตถุภาพยนตร์อาจมี วัตถุต่างๆ เช่น นักแสดง ที่มีคุณสมบัติเป็นของตัวเอง เช่น ชื่อหรือบทบาท
- ระบุค่าที่ถูกต้องสำหรับพร็อพเพอร์ตี้ ค่าคือข้อมูลจริง สำหรับพร็อพเพอร์ตี้ ตัวอย่างเช่น ชื่อภาพยนตร์ในฐานข้อมูลของคุณอาจเป็น "Raiders of the Lost Ark"
- กำหนดตัวเลือกการจัดเรียงและการจัดอันดับที่ผู้ใช้ของคุณต้องการ ตัวอย่างเช่น เมื่อค้นหาภาพยนตร์ ผู้ใช้อาจต้องการจัดเรียงตามลำดับเวลาและจัดอันดับ ระดับผู้ชม และไม่จำเป็นต้องจัดเรียงตามตัวอักษรของชื่อ
- (ไม่บังคับ) พิจารณาว่าพร็อพเพอร์ตี้รายการใดรายการหนึ่งของคุณแสดงถึง บริบทที่อาจมีการดำเนินการค้นหา เช่น ผู้ใช้ บทบาทงานหรือ เพื่อให้ระบบสามารถให้คำแนะนำในการเติมข้อความอัตโนมัติโดยอิงตาม บริบท ตัวอย่างเช่น สำหรับคนที่ค้นหาฐานข้อมูลของภาพยนตร์ ผู้ใช้อาจ สนใจภาพยนตร์บางเรื่องเท่านั้น ผู้ใช้จะให้คำจำกัดความ ประเภทที่ต้องการค้นหาได้ ซึ่งอาจเป็นส่วนหนึ่งของผู้ใช้ โปรไฟล์ จากนั้น เมื่อผู้ใช้เริ่มพิมพ์คำค้นหาภาพยนตร์ เฉพาะภาพยนตร์ในประเภทที่ต้องการ เช่น "ภาพยนตร์แอ็กชัน" แนะนำเป็น ของคำแนะนำที่เติมข้อความอัตโนมัติ
- สร้างรายการออบเจ็กต์ พร็อพเพอร์ตี้ และค่าตัวอย่างเหล่านี้ที่สามารถวัด ที่ใช้ในการค้นหา (สำหรับรายละเอียดเกี่ยวกับวิธีใช้รายการนี้ โปรดดูส่วนกำหนดตัวเลือกโอเปอเรเตอร์)
เริ่มต้นแหล่งข้อมูล
แหล่งข้อมูลแสดงถึงข้อมูลจากที่เก็บที่ได้รับการจัดทำดัชนี และจัดเก็บไว้ใน Google Cloud หากต้องการทราบวิธีการเริ่มต้นแหล่งข้อมูล อ้างถึง จัดการแหล่งข้อมูลของบุคคลที่สาม
ระบบจะแสดงผลการค้นหาของผู้ใช้จากแหล่งข้อมูล เมื่อผู้ใช้คลิกที่ ผลการค้นหา Cloud Search จะนำผู้ใช้ไปยังรายการจริงโดยใช้ URL ที่ระบุในคำขอจัดทำดัชนี
กำหนดออบเจ็กต์
หน่วยพื้นฐานของข้อมูลในสคีมาคือออบเจ็กต์ หรือที่เรียกว่า "สคีมา ของออบเจ็กต์" ซึ่งเป็นโครงสร้างเชิงตรรกะของข้อมูล ในฐานข้อมูลของภาพยนตร์ โครงสร้างเชิงตรรกะของข้อมูลคือ "ภาพยนตร์" วัตถุอื่นอาจเป็น "คน" ถึง ซึ่งแสดงถึงนักแสดงและทีมงานที่มีส่วนเกี่ยวข้องในภาพยนตร์
ออบเจ็กต์ทุกรายการในสคีมาจะมีชุดพร็อพเพอร์ตี้หรือแอตทริบิวต์ที่ อธิบายวัตถุ เช่น ชื่อและระยะเวลาของภาพยนตร์ และวันเกิดของบุคคล คุณสมบัติของวัตถุอาจรวมถึงค่าดั้งเดิม ค่า หรือวัตถุอื่นๆ
รูปที่ 1 แสดงภาพยนตร์และวัตถุคน และสิ่งที่เกี่ยวข้อง พร็อพเพอร์ตี้
![ภาพวาดการเชื่อมต่อสคีมาระหว่างเอนทิตี](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/schemaExample.png?authuser=4&hl=th)
สคีมาของ 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
คือชื่อของภาพยนตร์
ชื่อโอเปอเรเตอร์ไม่จำเป็นต้องเหมือนกับชื่อพร็อพเพอร์ตี้ แต่ คุณควรใช้ชื่อโอเปอเรเตอร์ที่แสดงถึงคำทั่วไปที่ใช้ ตามผู้ใช้ในองค์กร ตัวอย่างเช่น หากผู้ใช้ของคุณชอบคำนี้ "name" แทน "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
สคีมา, อ้างอิงถึง กำหนดคำพ้องความหมายสร้างเครื่องมือเชื่อมต่อ