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

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

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

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

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

ภาพรวมของการตีความการค้นหา
รูปที่ 1 การตีความการค้นหา

จากตัวอย่างการค้นหานี้ การตีความการค้นหาจะดำเนินการต่อไปนี้

  • แยกวิเคราะห์สคีมาและกำหนดว่าออบเจ็กต์ระดับบนสุดในแหล่งข้อมูลได้รับการจัดประเภทเป็น 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 และ "หมวดหมู่" 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: movie" และผลลัพธ์ที่แสดงจะจัดเรียงในวันที่ออกฉายโดยมีลำดับการจัดเรียงเริ่มต้นจากน้อยไปหามาก

เปิดใช้การตีความโอเปอเรเตอร์ที่สงวนไว้

คุณยังสามารถใช้โอเปอเรเตอร์ในตัวที่สงวนไว้ของ type, before, after, objecttype เพื่อเพิ่มประสิทธิภาพการตีความการค้นหา เมื่อจัดทำดัชนีเอกสาร ให้ทำดังนี้

  1. ป้อนข้อมูลช่อง updateTime ใน ItemMetadata เพื่อใช้โอเปอเรเตอร์ before และ after การตั้งค่าเหล่านี้ช่วยให้ Cloud Search ตีความการค้นหาต่อไปนี้ได้

    • "ภาพยนตร์จากสัปดาห์ที่แล้ว" จะแสดงรายชื่อภาพยนตร์ทั้งหมดที่มีการอัปเดตในดัชนีของสัปดาห์ก่อนหน้า
    • "ภาพยนตร์ก่อนเดือนมกราคม 2019" จะแสดงรายชื่อภาพยนตร์ทั้งหมดที่ได้รับการจัดทำดัชนีก่อนเดือนมกราคม 2019
  2. ป้อนข้อมูลช่อง mimeType ใน ItemMetadata เพื่อใช้การตรวจหาประเภทโดยอัตโนมัติ การค้นหา "วิดีโอแอ็กชัน" จะแสดงรายการเอกสารภาพยนตร์แอ็กชันทั้งหมดที่มีประเภท MIME เป็น 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 ในการค้นหา
  • คำค้นหาที่รวมคำที่เกี่ยวข้องกับโอเปอเรเตอร์เข้ากับข้อความอิสระจะไม่ตีความ เช่น จะไม่มีการสนับสนุนคำค้นหา "p0Prioritycase severity:s0" เนื่องจาก "p0การชำระเงินผ่านกรณีที่ใช้คำค้นหาเป็น p0 ได้" เป็นคำที่ไม่ฟรี แต่ "severity:s0" เป็นคำที่อิงตามโอเปอเรเตอร์
  • กลยุทธ์การตีความการค้นหาจะผสานรวมผลลัพธ์ที่ตีความแล้วกับผลลัพธ์ทั่วไป (ไม่มีการตีความและจัดอันดับความเกี่ยวข้อง) แต่ไม่ได้ทำการแทนที่ ผลการค้นหาทั้งหน้า