ฟีเจอร์การตีความการค้นหาของ Cloud Search จะตีความโอเปอเรเตอร์และตัวกรองในการค้นหาของผู้ใช้โดยอัตโนมัติ และแปลงองค์ประกอบเหล่านั้นเป็นการค้นหาแบบมีโครงสร้างที่อิงตามโอเปอเรเตอร์ การตีความข้อความค้นหาใช้โอเปอเรเตอร์ที่กําหนดไว้ในสคีมาร่วมกับเอกสารที่จัดทําดัชนีเพื่ออนุมานความหมายของข้อความค้นหาของผู้ใช้ ฟีเจอร์นี้ช่วยให้ผู้ใช้ค้นหาด้วยคีย์เวิร์ดเพียงไม่กี่คำแต่ยังคงได้รับผลการค้นหาที่แม่นยำ
ผลลัพธ์จริงที่แสดงต่อผู้ใช้จะขึ้นอยู่กับความเชื่อมั่นในการตีความข้อความค้นหา ความเชื่อมั่นขึ้นอยู่กับหลายปัจจัย ซึ่งรวมถึงตําแหน่งที่สตริงการค้นหาปรากฏในเอกสารที่จัดทําดัชนี สตริง เช่น ชื่อนักแสดง "Tom Hanks" ที่ปรากฏอย่างสม่ำเสมอในช่องสคีมาชื่อ actors
จะทําให้เกิดความเชื่อมั่นสูงขึ้น สตริงเดียวกัน ("Tom Hanks") ที่ปรากฏภายในย่อหน้าแทนที่จะเป็นช่องสคีมาอาจส่งผลให้ความเชื่อมั่นลดลง ในกรณีที่มีความมั่นใจสูง ระบบจะแสดงเฉพาะผลการตีความคำค้นหาต่อผู้ใช้ ในกรณีที่ความเชื่อมั่นต่ำ ระบบจะผสมผลการตีความคำค้นหาเข้ากับผลการค้นหาคีย์เวิร์ดตามปกติ
ตัวอย่างการตีความการค้นหา
สมมติว่าคุณมีแหล่งข้อมูล เช่น ฐานข้อมูล ซึ่งมีข้อมูลเกี่ยวกับภาพยนตร์ รูปที่ 1 แสดงตัวอย่างคำค้นหาและการตีความผลลัพธ์
เมื่อพิจารณาจากคําค้นหาตัวอย่างนี้ การตีความคําค้นหาจะทําดังนี้
แยกวิเคราะห์สคีมาและระบุว่าออบเจ็กต์ระดับบนสุดในแหล่งข้อมูลจัดอยู่ในประเภท
objecttype:movies
ตอนนี้การตีความคําค้นหาทราบว่า "movies" ในคําค้นหาเป็นประเภทออบเจ็กต์สแกนเอกสารในแหล่งข้อมูลร่วมกับสคีมาเพื่อระบุตําแหน่งที่สตริง "การดำเนินการ" เกิดขึ้น หากสตริงนี้ปรากฏในช่องแหล่งข้อมูล "genre" ที่เฉพาะเจาะจงเป็นหลัก การตีความการค้นหาจะมีความมั่นใจว่า "action" เป็นค่าพร็อพเพอร์ตี้สำหรับพร็อพเพอร์ตี้ "genre" ตามที่ระบุไว้ในสคีมา หากสตริงปรากฏในบริบทของย่อหน้าเนื้อหาเป็นหลัก ระดับความเชื่อมั่นของคําอธิบายคําค้นหาจะลดลง
การตีความคําค้นหาที่ได้คือ
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
"ภาพยนตร์"รายการคำจำกัดความพร็อพเพอร์ตี้ประเภทมี "genre"
operatorName
และ "Category"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: movies" และผลลัพธ์ที่แสดงจะจัดเรียงตามวันที่เผยแพร่โดยค่าเริ่มต้นจะจัดเรียงจากน้อยไปมาก
เปิดใช้การตีความโอเปอเรเตอร์ที่สงวนไว้
นอกจากนี้ คุณยังใช้โอเปอเรเตอร์ในตัวที่สงวนไว้อย่าง type
, before
, after
, objecttype
เพื่อเพิ่มประสิทธิภาพการตีความการค้นหาได้ด้วย เมื่อจัดทำดัชนีเอกสาร ให้ทำดังนี้
ป้อนข้อมูลในช่อง
updateTime
ในItemMetadata
เพื่อใช้โอเปอเรเตอร์before
และafter
การตั้งค่าเหล่านี้ช่วยให้ Cloud Search ตีความการค้นหาต่อไปนี้ได้- "ภาพยนตร์จากสัปดาห์ที่แล้ว" จะแสดงภาพยนตร์ทั้งหมดที่อัปเดตในดัชนีของสัปดาห์ก่อนหน้า
- "movies before jan 2019" จะแสดงภาพยนตร์ทั้งหมดที่ได้รับการจัดทําดัชนีก่อนเดือนมกราคม 2019
ป้อนข้อมูลในช่อง
mimeType
ในItemMetadata
เพื่อใช้การตรวจหาประเภทอัตโนมัติ การค้นหา "วิดีโอแอ็กชัน" จะแสดงรายการเอกสารภาพยนตร์แอ็กชันทั้งหมดที่มีประเภท MIMEapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
และapplication/vnd.google-apps.video
ข้อจํากัดในการตีความคําค้นหา
ฟีเจอร์การตีความข้อความค้นหามีข้อจํากัดต่อไปนี้
- การตีความการค้นหาใช้ได้กับ ACL ของแหล่งข้อมูลต่อไปนี้เท่านั้น
- เอกสารทั้งหมดเป็นแบบสาธารณะในโดเมน (ทุกคนในโดเมนเข้าถึงได้)
- เอกสารทั้งหมดเป็นสาธารณะสำหรับแหล่งข้อมูล (ทุกคนที่มีสิทธิ์เข้าถึงแหล่งข้อมูล ACL)
- เอกสารส่วนใหญ่ในแหล่งข้อมูลมี ACL เดียวกัน (เอกสารทั้งหมดรับค่า ACL จากรายการคอนเทนเนอร์เดียวกัน) โดยไม่มีการระบุผู้อ่านเพิ่มเติม
- หากโอเปอเรเตอร์สคีมาหลายรายการมีค่าเดียวกัน การตีความค่านั้นเพื่อหาความตั้งใจของโอเปอเรเตอร์สําหรับการค้นหาจะขึ้นอยู่กับปัจจัยความเชื่อมั่นโดยรวมที่ระบบตีความการค้นหาแสดง ตัวอย่างเช่น สมมติว่าคุณมีพร็อพเพอร์ตี้
priority
และseverity
ที่มีชื่อโอเปอเรเตอร์เดียวกันซึ่งกำหนดไว้ในสคีมา สมมติว่าทั้ง 2 ออปอเรเตอร์มีค่าเป็น 0, 1, 2 หรือ 3 ในตัวอย่างนี้ "0" ในคําค้นหาอาจหมายถึงค่าโอเปอเรเตอร์สําหรับpriority
หรือseverity
ค่าเหล่านี้มีความคลุมเครือและระดับความเชื่อมั่นจะต่ำลง - โดยค่าเริ่มต้น การตีความคําค้นหาของ Cloud Search จะเปลี่ยนค่าในช่องเป็นตัวพิมพ์เล็กเมื่อตีความคําค้นหา ยกเว้นโอเปอเรเตอร์ข้อความที่กําหนดด้วยตัวเลือก
exactMatchWithOperator
- ไม่รองรับโอเปอเรเตอร์
source
ในการค้นหา - ระบบจะไม่ตีความข้อความค้นหาที่รวมคําที่ขึ้นกับโอเปอเรเตอร์และคําที่เป็นข้อความอิสระ ตัวอย่างเช่น ระบบจะไม่รองรับการค้นหา "p0 priority cases severity:s0" เนื่องจาก "p0 priority cases" เป็นข้อความแบบอิสระ ส่วน "severity:s0" เป็นข้อความแบบโอเปอเรเตอร์
- กลยุทธ์การตีความคําค้นหาจะผสมผสานผลการตีความเข้ากับผลการค้นหาทั่วไป (ไม่ใช่ผลการตีความที่จัดอันดับตามความเกี่ยวข้อง) เสมอ แต่จะไม่ได้แทนที่ผลการค้นหาทั้งหน้า