การตีความคำค้นหาของ Cloud Search จะแปลงโอเปอเรเตอร์และตัวกรองในคำค้นหาของผู้ใช้เป็นคำค้นหาที่มีโครงสร้างซึ่งอิงตามโอเปอเรเตอร์โดยอัตโนมัติ ฟีเจอร์นี้ใช้โอเปอเรเตอร์ที่กำหนดไว้ในสคีมาและเอกสารที่จัดทำดัชนี เพื่ออนุมานเจตนาของคำค้นหา ซึ่งช่วยให้ผู้ใช้ค้นหาด้วยคีย์เวิร์ดน้อยที่สุดและได้รับผลลัพธ์ที่แม่นยำ
การนำเสนอผลลัพธ์ขึ้นอยู่กับความมั่นใจ ความเชื่อมั่นจะเพิ่มขึ้นเมื่อสตริงการค้นหาปรากฏในช่องสคีมาที่เฉพาะเจาะจงอย่างสม่ำเสมอ (เช่น "Tom Hanks"
ในฟิลด์ actors) ความเชื่อมั่นจะลดลงเมื่อสตริงปรากฏในข้อความทั่วไป
ความเชื่อมั่นสูงจะแสดงเฉพาะผลลัพธ์ที่ตีความ ขณะที่ความเชื่อมั่นต่ำจะผสมผสานผลลัพธ์เหล่านั้นกับผลลัพธ์ของคีย์เวิร์ดมาตรฐาน
ตัวอย่างการตีความคำค้นหา
พิจารณาฐานข้อมูลที่มีข้อมูลภาพยนตร์ รูปที่ 1 แสดงตัวอย่าง คำค้นหาและการตีความ
สำหรับการตีความการค้นหาในตัวอย่างนี้
- กำหนดจากสคีมาว่าออบเจ็กต์ระดับบนสุดคือ
objecttype:movies - สแกนเอกสารเพื่อระบุตำแหน่งที่เกิด "การดำเนินการ" หากปรากฏในฟิลด์
genreเป็นหลัก ความเชื่อมั่นจะเพิ่มขึ้นว่าค่าดังกล่าวเป็นค่าพร็อพเพอร์ตี้ของฟิลด์นั้น
การตีความที่ได้คือ
actor:"tom hanks" genre:action objecttype:movies
การตีความคำค้นหาจะดำเนินการโดยอัตโนมัติสำหรับผู้ใช้ทุกคน แต่คุณสามารถเพิ่มประสิทธิภาพได้โดย จัดโครงสร้างสคีมาตามที่อธิบายไว้ในส่วนต่อไปนี้
จัดโครงสร้างสคีมาเพื่อการตีความการค้นหา
การเพิ่มประสิทธิภาพสคีมาจะช่วยให้คุณได้รับประโยชน์จากการตีความคำค้นหา
เปิดใช้การตีความชื่อที่แสดง
การตีความคำค้นหาใช้ objectDefinitions และ propertyDefinitions เพื่อ
ตีความคำค้นหา สร้างชื่อที่แสดงที่เข้าใจง่ายโดยใช้
displayLabel
สำหรับพร็อพเพอร์ตี้
objectDisplayLabel
สำหรับออบเจ็กต์ และ operatorName สำหรับตัวดำเนินการ
ตัวอย่างนี้แสดงชื่อที่แสดงที่ใช้งานง่ายสำหรับออบเจ็กต์ภาพยนตร์
{
"objectDefinitions": [{
"name": "movie",
"options": {
"displayOptions": { "objectDisplayLabel": "Films" }
},
"propertyDefinitions": [{
"name": "genre",
"isReturnable": true,
"textPropertyOptions": {
"operatorOptions": { "operatorName": "genre" }
},
"displayOptions": { "displayLabel": "Category" }
}]
}]
}
ชื่อที่แสดงเหล่านี้ช่วยให้ตีความได้ เช่น
- "ภาพยนตร์แอ็กชัน" ->
genre:action object:movies - "ภาพยนตร์ประเภทแอ็กชันหรือระทึกขวัญ" ->
objecttype:movies genre:(action OR thriller) - "ภาพยนตร์หมวดหมู่ตลก" ->
genre:comedy objecttype:movies
เปิดใช้การตีความวันที่ ตัวเลข และการจัดเรียง
กำหนด lessThanOperatorName และ greaterThanOperatorName ใน
IntegerOperatorOptions
สำหรับพร็อพเพอร์ตี้วันที่และตัวเลขทั้งหมด หากต้องการเปิดใช้การจัดเรียง ให้ตั้งค่า isSortable
ตัวอย่างนี้จะเปิดใช้ตัวเลือกต่อไปนี้
{
"objectDefinitions": [{
"propertyDefinitions": [
{
"name": "runtime",
"isSortable": true,
"integerPropertyOptions": {
"operatorOptions": {
"operatorName": "runtime",
"lessThanOperatorName": "runtimelessthan",
"greaterThanOperatorName": "runtimegreaterthan"
}
}
},
{
"name": "releasedate",
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "releasedate",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
การตั้งค่าเหล่านี้ช่วยให้สามารถตีความได้ดังนี้
- "ภาพยนตร์ที่ออกฉายในปีนี้" ->
objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31 - "ภาพยนตร์ที่มีความยาวน้อยกว่า 90 นาที" ->
objecttype:movies runtimelessthan:90
เปิดใช้การตีความโอเปอเรเตอร์ที่สงวนไว้
ใช้โอเปอเรเตอร์ในตัว เช่น type, before, after และ objecttype
- ป้อนข้อมูลใน
updateTimeในItemMetadataเพื่อใช้beforeและafter - ป้อนข้อมูล
mimeTypeในItemMetadataเพื่อให้ระบบตรวจหาอัตโนมัติ เช่น "วิดีโอการกระทำ" จะแสดงเอกสารที่มีประเภท MIME ของวิดีโอ
ข้อจำกัดในการตีความคำค้นหา
- ใช้ได้เฉพาะกับ ACL ของแหล่งข้อมูลต่อไปนี้
- สาธารณสมบัติ
- แหล่งข้อมูลสาธารณะ
- เอกสารส่วนใหญ่ใช้ ACL เดียวกันที่รับช่วงมา
- ชื่อโอเปอเรเตอร์ที่ใช้ร่วมกัน (เช่น
priorityและseverityทั้ง 2 แอปใช้ 0-3) ความน่าเชื่อถือต่ำ - โดยค่าเริ่มต้น การตีความจะใช้ตัวพิมพ์เล็กสำหรับค่าฟิลด์ เว้นแต่คุณจะใช้
exactMatchWithOperator - ไม่รองรับตัวดำเนินการ
source - โอเปอเรเตอร์และข้อความอิสระที่รวมกัน (เช่น "p0 cases severity:s0") จะ ไม่ได้รับการตีความ
- ระบบจะผสานผลลัพธ์กับผลลัพธ์ที่จัดอันดับตามความเกี่ยวข้องเสมอ