ฟีเจอร์การตีความคำค้นหาของ Cloud Search จะตีความโอเปอเรเตอร์และตัวกรองในคำค้นหาของผู้ใช้โดยอัตโนมัติ และแปลงองค์ประกอบเหล่านั้นเป็นการค้นหาที่มีโครงสร้างและอิงตามโอเปอเรเตอร์ การตีความการค้นหาจะใช้โอเปอเรเตอร์ที่กำหนดไว้ในสคีมาร่วมกับเอกสารที่จัดทำดัชนีเพื่อสรุปความหมายของคำค้นหาของผู้ใช้ ฟีเจอร์นี้ช่วยให้ผู้ใช้ค้นหาโดยใช้คีย์เวิร์ดเพียงเล็กน้อย แต่ก็ยังได้รับผลลัพธ์ที่แม่นยํา
ผลลัพธ์จริงที่แสดงให้ผู้ใช้เห็นจะขึ้นอยู่กับความเชื่อมั่นในการตีความคำค้นหา ความเชื่อมั่นขึ้นอยู่กับปัจจัยหลายประการ รวมถึงตำแหน่งที่สตริงการค้นหาปรากฏในเอกสารที่จัดทำดัชนี สตริง เช่น ชื่อนักแสดง "ทอม แฮงส์" ที่ปรากฏอย่างต่อเนื่องในช่องสคีมาชื่อ actors
ส่งผลให้ความเชื่อมั่นสูงขึ้น การที่สตริงเดียวกัน ("Tom Hanks") ปรากฏในย่อหน้าแทนที่จะเป็นช่องสคีมาอาจทำให้ความเชื่อมั่นลดลง ในกรณีที่มั่นใจมาก ระบบจะแสดงเฉพาะผลลัพธ์จากการตีความคำค้นหาให้ผู้ใช้เห็น ในกรณีที่ความเชื่อมั่นต่ำ ผลลัพธ์จากการตีความข้อความค้นหาจะปนกับผลการค้นหาคีย์เวิร์ดปกติ
ตัวอย่างการตีความการค้นหา
สมมติว่าคุณมีแหล่งข้อมูล เช่น ฐานข้อมูล ที่มีข้อมูลเกี่ยวกับภาพยนตร์ รูปที่ 1 แสดงตัวอย่างคำค้นหาและการตีความผลลัพธ์
ในตัวอย่างนี้ การตีความการค้นหาจะทำสิ่งต่อไปนี้
แยกวิเคราะห์สคีมาและพิจารณาว่าออบเจ็กต์ระดับบนสุดในแหล่งข้อมูลได้รับการจัดประเภทเป็น
objecttype:movies
ตอนนี้การตีความการค้นหาจะรู้ว่า "ภาพยนตร์" ในคำค้นหาเป็นประเภทออบเจ็กต์สแกนเอกสารในแหล่งข้อมูลร่วมกับสคีมาเพื่อระบุตำแหน่งที่สตริง "action" เกิดขึ้น หากสตริงเกิดขึ้นในช่องแหล่งข้อมูล "ประเภท" ที่เจาะจงเป็นหลัก การตีความการค้นหาจะมีความมั่นใจว่า "action" เป็นค่าพร็อพเพอร์ตี้สำหรับพร็อพเพอร์ตี้ "ประเภท" ตามที่ระบุไว้ในสคีมา หากสตริงเกิดขึ้นในบริบทของย่อหน้าของเนื้อหาเป็นหลัก ระดับความเชื่อมั่นของการแปลข้อความค้นหาจะลดลง
การตีความการค้นหาที่ได้คือ
actor:“tom hanks” genre:action objecttype:movies
ระบบจะเปิดใช้การตีความคำค้นหาสำหรับลูกค้า Cloud Search ทั้งหมดโดยอัตโนมัติโดยไม่ต้องดำเนินการใดๆ เพิ่มเติม อย่างไรก็ตาม เพื่อให้การตีความคำค้นหามีประสิทธิภาพสูงสุด คุณควรจัดโครงสร้างสคีมาตามคำแนะนำในเอกสารนี้
จัดโครงสร้างสคีมาเพื่อรองรับการตีความการค้นหา
คุณควรจัดโครงสร้างสคีมาเพื่อให้มั่นใจว่า จะได้รับประโยชน์จากการตีความคำค้นหา
เปิดใช้การตีความชื่อที่แสดง
การตีความคำค้นหาของ Cloud Search จะใช้ objectDefinitions
และ propertyDefinitions
ในสคีมาเพื่อตีความคำค้นหาของผู้ใช้และปรับแต่งผลลัพธ์ เพื่อให้องค์ประกอบสคีมาเหล่านี้มีประโยชน์สูงสุด คุณควรสร้างชื่อที่แสดงซึ่งเข้าใจง่ายโดยใช้ displayLabel
สำหรับชื่อพร็อพเพอร์ตี้ objectDisplayLabel
สำหรับชื่อออบเจ็กต์ และ operatorName
สำหรับโอเปอเรเตอร์
สคีมาต่อไปนี้แสดงชื่อที่แสดงที่ใช้งานง่ายสำหรับออบเจ็กต์ภาพยนตร์
{
"objectDefinitions": [
{
"name": "movie",
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
...
},
"propertyDefinitions": [
{
"name": "genre",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "genre"
}
},
"displayOptions": {
"displayLabel": "Category"
}
},
...
]
}
]
}
ในตัวอย่างก่อนหน้านี้
คำจำกัดความของวัตถุภาพยนตร์มี
objectDisplayLabel
เป็น "ภาพยนตร์"ประเภท propertyDefinition มี
operatorName
เป็น "ประเภท" และ "หมวดหมู่"displayLabel
ชื่อที่แสดงเหล่านี้ช่วยให้ Cloud Search ตีความคำค้นหาต่อไปนี้ได้
- "ภาพยนตร์แอ็กชัน" "ภาพยนตร์ประเภทแอ็กชัน" หรือ "ภาพยนตร์ประเภทแอ็กชัน" จะตีความเป็น
genre:action object:movies
- "ภาพยนตร์ที่มีประเภทแอ็กชันหรือระทึกขวัญ" ระบบจะตีความว่าเป็น
objecttype:movies genre:(action OR thriller)
- "ภาพยนตร์แอ็กชัน" หรือ "ภาพยนตร์แอ็กชัน" จะได้รับการแปลค่าเป็น
genre:action objecttype:movies
- “ภาพยนตร์หมวดหมู่ตลก” ระบบจะตีความว่า
genre:comedy objecttype:movies
เปิดใช้การตีความวันที่ ตัวเลข และการจัดเรียง
คุณควรกำหนด lessThanOperatorName
และ greaterThanOperatorName
ที่ระบุใน IntegerOperatorOptions
สำหรับพร็อพเพอร์ตี้วันที่และตัวเลขทั้งหมด การตั้งค่าเหล่านี้จะทำให้ระบบแสดงวันที่โดยอัตโนมัติและ
การตีความตัวเลขได้ นอกจากนี้ หากต้องการเปิดใช้การตีความการจัดเรียง ให้ตั้งค่าตัวเลือก isSortable
สำหรับคุณสมบัติของวันที่และตัวเลข สคีมาต่อไปนี้แสดงวิธีเปิดใช้ตัวเลือกเหล่านี้
{
"objectDefinitions": [
{
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
},
"propertyDefinitions": [
{
"name": "runtime",
"isReturnable": true,
"isSortable": true,
"integerPropertyOptions": {
"orderedRanking": "DESCENDING",
"minimumValue": {
"value": 10
},
"maximumValue": {
"value": 500
},
"operatorOptions": {
"operatorName": "runtime",
"lessThanOperatorName": "runtimelessthan",
"greaterThanOperatorName": "runtimegreaterthan"
}
},
"displayOptions": {
"displayLabel": "Length"
}
},
{
"name": "releasedate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "releasedate",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}
]
}
ในตัวอย่างก่อนหน้านี้
- พร็อพเพอร์ตี้ที่เป็นตัวเลข
runtime
หมายถึงความยาวของภาพยนตร์ มีการตั้งค่าruntimelessthan
และruntimegreaterthan
สำหรับพร็อพเพอร์ตี้นี้ - พร็อพเพอร์ตี้วันที่
releaseDate
หมายถึงเวลาที่ภาพยนตร์เข้าฉายในโรงภาพยนตร์ มีการตั้งค่าreleasedbefore
และreleasedafter
สำหรับพร็อพเพอร์ตี้นี้
การตั้งค่าเหล่านี้ช่วยให้ Cloud Search สามารถตีความคำค้นหาต่อไปนี้
- สมมติว่าปี 2019 "ภาพยนตร์ที่ออกฉายในปีนี้" จะตีความเป็น
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
- สมมติว่าสัปดาห์นี้เป็นสัปดาห์ที่ 3 ของเดือนมีนาคม
"ภาพยนตร์ที่ออกฉายเมื่อสัปดาห์ที่แล้ว" จะถูกตีความว่า
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
- "ภาพยนตร์ที่มีรันไทม์น้อยกว่า 90" จะตีความเป็น
objjecttype: movies runtimelessthan:90
- สมมติว่าปี 2019 "ภาพยนตร์ที่ออกฉายในปีนี้และมีความยาวมากกว่า 120 เรื่อง" ระบบจะตีความ
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
- "จัดเรียงภาพยนตร์ตามวันที่เผยแพร่" จะกรอง "objecttype: ภาพยนตร์" และผลลัพธ์ที่แสดงจะจัดเรียงตามวันที่เผยแพร่โดยเรียงตามลำดับเริ่มต้นจากน้อยไปมาก
เปิดใช้การตีความโอเปอเรเตอร์ที่สงวนไว้
นอกจากนี้ คุณยังใช้โอเปอเรเตอร์ในตัว type
, before
, after
, objecttype
ที่จองไว้เพื่อปรับปรุงการตีความการค้นหาได้ด้วย ขณะจัดทำดัชนีเอกสาร ให้ทำดังนี้
ป้อนข้อมูลในช่อง
updateTime
ในItemMetadata
เพื่อใช้โอเปอเรเตอร์before
และafter
การตั้งค่าเหล่านี้จะเปิดใช้ Cloud Search เพื่อแปลความหมายการค้นหาต่อไปนี้- "ภาพยนตร์จากสัปดาห์ที่แล้ว" จะแสดงรายการภาพยนตร์ทั้งหมดที่มีการอัปเดตในดัชนีสัปดาห์ก่อนหน้านี้
- "ภาพยนตร์ก่อนเดือนมกราคม 2019" จะแสดงรายการภาพยนตร์ทั้งหมดที่จัดทำดัชนีก่อนเดือนมกราคม 2019
ป้อนข้อมูลในช่อง
mimeType
ในItemMetadata
เพื่อใช้การตรวจหาประเภทอัตโนมัติ คำค้นหา "วิดีโอแอ็กชัน" จะแสดงรายการเอกสารภาพยนตร์แอ็กชันทั้งหมดที่มีประเภท MIMEapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
และapplication/vnd.google-apps.video
ข้อจำกัดในการตีความคำค้นหา
ฟีเจอร์การแปลคำค้นหามีข้อจำกัดดังต่อไปนี้
- การตีความการค้นหาใช้ได้กับ ACL ของแหล่งข้อมูลต่อไปนี้เท่านั้น
- เอกสารทั้งหมดเป็นแบบสาธารณะ (ทุกคนในโดเมนเข้าถึงได้)
- เอกสารทั้งหมดเป็นแหล่งข้อมูลสาธารณะ (ทุกคนที่มีสิทธิ์เข้าถึง ACL ของแหล่งข้อมูล)
- เอกสารส่วนใหญ่ในแหล่งข้อมูลมี ACL เดียวกัน (เอกสารทั้งหมดรับค่า ACL จากรายการคอนเทนเนอร์เดียวกัน) โดยไม่มีการกำหนดโปรแกรมอ่านเพิ่มเติม
- หากโอเปอเรเตอร์สคีมาหลายรายการมีค่าเดียวกัน การตีความค่านั้นไปยัง Intent ของโอเปอเรเตอร์สำหรับการค้นหาจะขึ้นอยู่กับปัจจัยความเชื่อมั่นโดยรวมที่ได้รับจากระบบการแปลความหมายการค้นหา ตัวอย่างเช่น สมมติว่าคุณมีพร็อพเพอร์ตี้
priority
และseverity
ที่มีชื่อโอเปอเรเตอร์เดียวกันตามที่กำหนดไว้ในสคีมา สมมติว่าโอเปอเรเตอร์ทั้งสองมีค่าเป็น 0, 1, 2 หรือ 3 ในตัวอย่างนี้ "0" ในการค้นหาอาจหมายถึงค่าโอเปอเรเตอร์สำหรับpriority
หรือseverity
ค่าเหล่านี้ไม่ชัดเจนและระดับความเชื่อมั่นต่ำลง - โดยค่าเริ่มต้น การตีความคำค้นหาของ Cloud Search จะลดการใช้ตัวพิมพ์เล็กกับค่าในช่องเมื่อตีความคำค้นหา ยกเว้นโอเปอเรเตอร์ข้อความที่กำหนดไว้ด้วยตัวเลือก
exactMatchWithOperator
- ระบบไม่รองรับโอเปอเรเตอร์
source
ในการค้นหา - คำค้นหาที่รวมคำตามโอเปอเรเตอร์และคำที่ใช้ข้อความอิสระเข้าด้วยกันจะไม่ตีความ เช่น ระบบจะไม่รองรับคำค้นหา "p0Priority case severity:s0" เพราะ "p0ใส่ข้อมูลหลัก" เป็นคำแบบไม่เสียค่าใช้จ่าย ส่วน "severity:s0" เป็นคำที่อิงตามโอเปอเรเตอร์
- กลยุทธ์การตีความคำค้นหาจะผสานผลลัพธ์ที่ตีความแล้วกับผลลัพธ์ทั่วไป (ไม่มีการตีความและจัดอันดับความเกี่ยวข้อง) เสมอ ไม่สามารถแทนที่ผลการค้นหาทั้งหน้า