ฟีเจอร์การตีความคำค้นหาของ Cloud Search จะตีความ โอเปอเรเตอร์และตัวกรองในข้อความค้นหาของผู้ใช้ และแปลงองค์ประกอบเหล่านั้นเป็น คำค้นหาที่มีโครงสร้างและอิงตามโอเปอเรเตอร์ การตีความการค้นหาใช้โอเปอเรเตอร์ที่กำหนดไว้ ในสคีมาร่วมกับเอกสารที่จัดทำดัชนีแล้ว เพื่ออนุมานว่าผู้ใช้ "ข้อความค้นหา" ฟีเจอร์นี้ช่วยให้ผู้ใช้ค้นหาโดยมี คำหลัก แต่ยังคงได้รับผลลัพธ์ที่แม่นยำ
ผลลัพธ์จริงที่แสดงให้ผู้ใช้เห็นจะขึ้นอยู่กับความเชื่อมั่น
ของการแปลความหมายคำค้นหา ความเชื่อมั่นขึ้นอยู่กับปัจจัยหลายอย่าง
ซึ่งรวมถึงตำแหน่งที่สตริงการค้นหาปรากฏในเอกสารที่จัดทำดัชนี สตริง เช่น
ชื่อนักแสดง "Tom Hanks" ปรากฏอย่างต่อเนื่องใน
สคีมาชื่อ actors
ช่วยเพิ่มความแม่นยำ สตริงเดียวกัน
("Tom Hanks") ปรากฏในย่อหน้าแทนที่จะเป็นช่องสคีมา
ส่งผลให้ความเชื่อมั่นลดลง ในกรณีที่มั่นใจมาก ระบบจะแสดงเฉพาะผลลัพธ์
จากการแปลค่าข้อความค้นหา แสดงต่อผู้ใช้ ในกรณีที่แอปไม่รัดกุม
ผลลัพธ์จากการตีความข้อความค้นหาจะถูกผสมผสานกับ
ผลการค้นหาคีย์เวิร์ด
ตัวอย่างการตีความการค้นหา
สมมติว่าคุณมีแหล่งข้อมูล เช่น ฐานข้อมูลที่มี ข้อมูลเกี่ยวกับภาพยนตร์ รูปที่ 1 แสดงตัวอย่างข้อความค้นหา และผลลัพธ์ที่ได้
![ภาพรวมการตีความการค้นหา](https://developers.google.cn/static/cloud-search/images/query-interpretation.png?authuser=6&hl=th)
จากตัวอย่างการค้นหานี้ การตีความการค้นหา ทำสิ่งต่อไปนี้
แยกวิเคราะห์สคีมาและระบุว่าออบเจ็กต์ระดับบนสุดในแหล่งข้อมูล ได้รับการจัดประเภทเป็น
objecttype:movies
ตอนนี้การตีความคำค้นหารู้แล้วว่า "ภาพยนตร์" ในการค้นหาเป็นประเภทอ็อบเจกต์สแกนเอกสารในแหล่งข้อมูลร่วมกับสคีมาเพื่อ กำหนดตำแหน่งของสตริง "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
เป็น "genre" และ "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: ภาพยนตร์” และ ผลลัพธ์ที่แสดงจะจัดเรียงในวันที่เปิดตัวด้วยลำดับการจัดเรียงเริ่มต้น จากน้อยไปมาก
เปิดใช้การตีความโอเปอเรเตอร์ที่สงวนไว้
คุณยังใช้ type
, before
, after
, objecttype
ที่จองไว้ในตัวได้ด้วย
เพื่อปรับปรุงการตีความการค้นหา เมื่อจัดทำดัชนีเอกสาร ให้ทำ
ดังต่อไปนี้:
ป้อนข้อมูลในช่อง
updateTime
ในItemMetadata
เพื่อใช้โอเปอเรเตอร์before
และafter
เหล่านี้ การตั้งค่าจะเปิดใช้ Cloud Search เพื่อแปลความหมายการค้นหาต่อไปนี้- "ภาพยนตร์จากสัปดาห์ที่แล้ว" จะแสดงรายการภาพยนตร์ทั้งหมดที่มีการอัปเดตใน จัดทำดัชนีของสัปดาห์ก่อนหน้านี้
- "ภาพยนตร์ก่อนเดือนมกราคม 2019" จะแสดงรายการภาพยนตร์ทั้งหมดที่จัดทำดัชนีไว้ก่อน มกราคม 2019
ป้อนข้อมูลในช่อง
mimeType
ในItemMetadata
เพื่อใช้การตรวจหาอัตโนมัติ ประเภท คำค้นหา "วิดีโอแอ็กชัน" จะแสดงรายการเอกสารภาพยนตร์แอ็กชันทั้งหมดที่มีการแสดงละครใบ้ ประเภทapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
video/
และapplication/vnd.google-apps.video
ข้อจำกัดในการตีความคำค้นหา
ฟีเจอร์การแปลความหมายการค้นหามีข้อจำกัดดังต่อไปนี้
- การตีความการค้นหาใช้ได้กับ ACL ของแหล่งข้อมูลเหล่านี้เท่านั้น
- เอกสารทั้งหมดเป็นแบบสาธารณะ (ทุกคนในโดเมนเข้าถึงได้)
- เอกสารทั้งหมดเป็นแหล่งข้อมูลสาธารณะ (ทุกคนที่มีสิทธิ์เข้าถึงแหล่งข้อมูล ACL)
- เอกสารส่วนใหญ่ในแหล่งข้อมูลมี ACL เดียวกัน (เอกสารทั้งหมด) รับค่า ACL จากรายการคอนเทนเนอร์เดียวกัน) โดยไม่มีการกำหนดผู้อ่านเพิ่มเติม
- ถ้าโอเปอเรเตอร์สคีมาหลายรายการมีค่าเหมือนกัน ระบบจะตีความ
ค่านั้นให้กับความตั้งใจของโอเปอเรเตอร์สำหรับการค้นหาจะขึ้นอยู่กับความเชื่อมั่นโดยรวม
ที่ส่งกลับมาโดยระบบการแปลความหมายคำค้นหา ตัวอย่างเช่น สมมติว่าคุณ
มีพร็อพเพอร์ตี้
priority
และseverity
ที่มีชื่อโอเปอเรเตอร์เหมือนกัน กำหนดไว้ในสคีมา สมมติว่าโอเปอเรเตอร์ทั้งสองมีค่าเป็น 0, 1, 2 หรือ 3 ในตัวอย่างนี้คือ "0" ในการค้นหาสามารถอ้างอิงถึงค่าโอเปอเรเตอร์priority
หรือseverity
ค่าเหล่านี้ไม่ชัดเจนและระดับความเชื่อมั่น ด้านล่าง - โดยค่าเริ่มต้น การตีความคำค้นหาของ Cloud Search จะลดอักษรตัวพิมพ์เล็ก/ใหญ่
เมื่อตีความข้อความค้นหา ยกเว้นสำหรับโอเปอเรเตอร์ข้อความที่กำหนดโดย
exactMatchWithOperator
ตัวเลือก - ระบบไม่รองรับโอเปอเรเตอร์
source
ในการค้นหา - คำค้นหาที่รวมคำตามโอเปอเรเตอร์และคำที่ใช้ในข้อความฟรีจะไม่ ได้รับการแปลแล้ว ตัวอย่างเช่น คำค้นหา "p0Priority Cases severity:s0" จะไม่ ได้ เนื่องจาก "กรณีที่มีลำดับความสำคัญ P0" เป็นคำศัพท์แบบอิสระ ส่วน "severity:s0" เป็นคำที่อิงตามโอเปอเรเตอร์
- กลยุทธ์การตีความข้อความค้นหาจะผสานผลลัพธ์ที่ตีความแล้วเข้ากับ ผลลัพธ์ทั่วไป (ไม่มีการตีความ จัดอันดับความเกี่ยวข้อง) วิธีนี้ไม่ได้ทำงานเต็มรูปแบบ การแทนที่หน้าของผลลัพธ์