จัดโครงสร้างสคีมาเพื่อการตีความคําค้นหาที่ดีที่สุด

การตีความคำค้นหาของ Cloud Search จะแปลงโอเปอเรเตอร์และตัวกรองในคำค้นหาของผู้ใช้เป็นคำค้นหาที่มีโครงสร้างซึ่งอิงตามโอเปอเรเตอร์โดยอัตโนมัติ ฟีเจอร์นี้ใช้โอเปอเรเตอร์ที่กำหนดไว้ในสคีมาและเอกสารที่จัดทำดัชนี เพื่ออนุมานเจตนาของคำค้นหา ซึ่งช่วยให้ผู้ใช้ค้นหาด้วยคีย์เวิร์ดน้อยที่สุดและได้รับผลลัพธ์ที่แม่นยำ

การนำเสนอผลลัพธ์ขึ้นอยู่กับความมั่นใจ ความเชื่อมั่นจะเพิ่มขึ้นเมื่อสตริงการค้นหาปรากฏในช่องสคีมาที่เฉพาะเจาะจงอย่างสม่ำเสมอ (เช่น "Tom Hanks" ในฟิลด์ actors) ความเชื่อมั่นจะลดลงเมื่อสตริงปรากฏในข้อความทั่วไป ความเชื่อมั่นสูงจะแสดงเฉพาะผลลัพธ์ที่ตีความ ขณะที่ความเชื่อมั่นต่ำจะผสมผสานผลลัพธ์เหล่านั้นกับผลลัพธ์ของคีย์เวิร์ดมาตรฐาน

ตัวอย่างการตีความคำค้นหา

พิจารณาฐานข้อมูลที่มีข้อมูลภาพยนตร์ รูปที่ 1 แสดงตัวอย่าง คำค้นหาและการตีความ

ภาพรวมของการตีความคำค้นหา
รูปที่ 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

  1. ป้อนข้อมูลใน updateTime ใน ItemMetadata เพื่อใช้ before และ after
  2. ป้อนข้อมูล mimeType ใน ItemMetadata เพื่อให้ระบบตรวจหาอัตโนมัติ เช่น "วิดีโอการกระทำ" จะแสดงเอกสารที่มีประเภท MIME ของวิดีโอ

ข้อจำกัดในการตีความคำค้นหา

  • ใช้ได้เฉพาะกับ ACL ของแหล่งข้อมูลต่อไปนี้
    • สาธารณสมบัติ
    • แหล่งข้อมูลสาธารณะ
    • เอกสารส่วนใหญ่ใช้ ACL เดียวกันที่รับช่วงมา
  • ชื่อโอเปอเรเตอร์ที่ใช้ร่วมกัน (เช่น priority และ severity ทั้ง 2 แอปใช้ 0-3) ความน่าเชื่อถือต่ำ
  • โดยค่าเริ่มต้น การตีความจะใช้ตัวพิมพ์เล็กสำหรับค่าฟิลด์ เว้นแต่คุณจะใช้ exactMatchWithOperator
  • ไม่รองรับตัวดำเนินการ source
  • โอเปอเรเตอร์และข้อความอิสระที่รวมกัน (เช่น "p0 cases severity:s0") จะ ไม่ได้รับการตีความ
  • ระบบจะผสานผลลัพธ์กับผลลัพธ์ที่จัดอันดับตามความเกี่ยวข้องเสมอ