สร้างและลงทะเบียนสคีมา

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

คุณสร้างสคีมาได้โดยการระบุออบเจ็กต์สคีมา JSON ให้กับ API จากนั้นลงทะเบียน คุณต้องลงทะเบียนออบเจ็กต์สคีมา สำหรับที่เก็บแต่ละแห่งก่อนที่จะจัดทำดัชนีข้อมูลได้

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

สร้างสคีมา

ขั้นตอนในการสร้างสคีมาของ Cloud Search มีดังนี้

  1. ระบุพฤติกรรมของผู้ใช้ที่คาดหวัง
  2. เริ่มต้นแหล่งข้อมูล
  3. สร้างสคีมา
  4. ตัวอย่างสคีมาที่สมบูรณ์
  5. ลงทะเบียนสคีมา
  6. จัดทำดัชนีข้อมูล
  7. ทดสอบสคีมา
  8. ปรับแต่งสคีมา

ระบุพฤติกรรมของผู้ใช้ที่คาดหวัง

การคาดเดาประเภทคำค้นหาของผู้ใช้จะช่วยกำหนดทิศทางกลยุทธ์ของคุณ สำหรับการสร้างสคีมา

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

หากต้องการกําหนดสคีมาเพื่อให้สอดคล้องกับรูปแบบพฤติกรรมของผู้ใช้ ให้พิจารณา ทำงานเหล่านี้:

  1. ประเมินชุดคำค้นหาที่ต้องการที่หลากหลายจากผู้ใช้ต่างๆ
  2. ระบุออบเจ็กต์ที่อาจใช้ในการค้นหา ออบเจ็กต์เป็นไปตามตรรกะ ชุดข้อมูลที่เกี่ยวข้องกัน เช่น ภาพยนตร์ในฐานข้อมูลของภาพยนตร์
  3. ระบุคุณสมบัติและค่าที่เป็นส่วนประกอบของออบเจ็กต์และอาจเป็น ที่ใช้ในการค้นหา พร็อพเพอร์ตี้คือแอตทริบิวต์ที่จัดทำดัชนีได้ของออบเจ็กต์ ซึ่งอาจมีค่าพื้นฐานหรือวัตถุอื่นๆ เช่น ออบเจ็กต์ภาพยนตร์อาจมีพร็อพเพอร์ตี้ เช่น ชื่อภาพยนตร์และ เป็นค่าพื้นฐาน วัตถุภาพยนตร์อาจมี วัตถุต่างๆ เช่น นักแสดง ที่มีคุณสมบัติเป็นของตัวเอง เช่น ชื่อหรือบทบาท
  4. ระบุค่าที่ถูกต้องสำหรับพร็อพเพอร์ตี้ ค่าคือข้อมูลจริง สำหรับพร็อพเพอร์ตี้ ตัวอย่างเช่น ชื่อภาพยนตร์ในฐานข้อมูลของคุณอาจเป็น "Raiders of the Lost Ark"
  5. กำหนดตัวเลือกการจัดเรียงและการจัดอันดับที่ผู้ใช้ของคุณต้องการ ตัวอย่างเช่น เมื่อค้นหาภาพยนตร์ ผู้ใช้อาจต้องการจัดเรียงตามลำดับเวลาและจัดอันดับ ระดับผู้ชม และไม่จำเป็นต้องจัดเรียงตามตัวอักษรของชื่อ
  6. (ไม่บังคับ) พิจารณาว่าพร็อพเพอร์ตี้รายการใดรายการหนึ่งของคุณแสดงถึง บริบทที่อาจมีการดำเนินการค้นหา เช่น ผู้ใช้ บทบาทงานหรือ เพื่อให้ระบบสามารถให้คำแนะนำในการเติมข้อความอัตโนมัติโดยอิงตาม บริบท ตัวอย่างเช่น สำหรับคนที่ค้นหาฐานข้อมูลของภาพยนตร์ ผู้ใช้อาจ สนใจภาพยนตร์บางเรื่องเท่านั้น ผู้ใช้จะให้คำจำกัดความ ประเภทที่ต้องการค้นหาได้ ซึ่งอาจเป็นส่วนหนึ่งของผู้ใช้ โปรไฟล์ จากนั้น เมื่อผู้ใช้เริ่มพิมพ์คำค้นหาภาพยนตร์ เฉพาะภาพยนตร์ในประเภทที่ต้องการ เช่น "ภาพยนตร์แอ็กชัน" แนะนำเป็น ของคำแนะนำที่เติมข้อความอัตโนมัติ
  7. สร้างรายการออบเจ็กต์ พร็อพเพอร์ตี้ และค่าตัวอย่างเหล่านี้ที่สามารถวัด ที่ใช้ในการค้นหา (สำหรับรายละเอียดเกี่ยวกับวิธีใช้รายการนี้ โปรดดูส่วนกำหนดตัวเลือกโอเปอเรเตอร์)

เริ่มต้นแหล่งข้อมูล

แหล่งข้อมูลแสดงถึงข้อมูลจากที่เก็บที่ได้รับการจัดทำดัชนี และจัดเก็บไว้ใน Google Cloud หากต้องการทราบวิธีการเริ่มต้นแหล่งข้อมูล อ้างถึง จัดการแหล่งข้อมูลของบุคคลที่สาม

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

กำหนดออบเจ็กต์

หน่วยพื้นฐานของข้อมูลในสคีมาคือออบเจ็กต์ หรือที่เรียกว่า "สคีมา ของออบเจ็กต์" ซึ่งเป็นโครงสร้างเชิงตรรกะของข้อมูล ในฐานข้อมูลของภาพยนตร์ โครงสร้างเชิงตรรกะของข้อมูลคือ "ภาพยนตร์" วัตถุอื่นอาจเป็น "คน" ถึง ซึ่งแสดงถึงนักแสดงและทีมงานที่มีส่วนเกี่ยวข้องในภาพยนตร์

ออบเจ็กต์ทุกรายการในสคีมาจะมีชุดพร็อพเพอร์ตี้หรือแอตทริบิวต์ที่ อธิบายวัตถุ เช่น ชื่อและระยะเวลาของภาพยนตร์ และวันเกิดของบุคคล คุณสมบัติของวัตถุอาจรวมถึงค่าดั้งเดิม ค่า หรือวัตถุอื่นๆ

รูปที่ 1 แสดงภาพยนตร์และวัตถุคน และสิ่งที่เกี่ยวข้อง พร็อพเพอร์ตี้

วันที่ ภาพวาดการเชื่อมต่อสคีมาระหว่างเอนทิตี
รูปที่ 1 ตัวอย่างสคีมาที่แสดงออบเจ็กต์ 2 รายการ และออบเจ็กต์ย่อย

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

{
  "objectDefinitions": [
    {
      "name": "movie",
      ...
    },
    {
      "name": "person",
      ...
    }
  ]
}

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

กำหนดพร็อพเพอร์ตี้ของออบเจ็กต์

ตามที่ระบุไว้ในข้อมูลอ้างอิงสำหรับ ObjectDefinition, ชื่อออบเจ็กต์ตามด้วยชุดของ options และลิสต์ propertyDefinitions options สามารถ ประกอบด้วย freshnessOptions และ displayOptions freshnessOptions ใช้เพื่อปรับการจัดอันดับการค้นหาตามความใหม่ของรายการ displayOptions ใช้เพื่อกำหนดว่าจะแสดงป้ายกำกับและคุณสมบัติเฉพาะหรือไม่ ผลการค้นหาออบเจ็กต์

propertyDefinitions คือส่วนที่คุณกำหนดคุณสมบัติของวัตถุ เช่น ชื่อภาพยนตร์ และวันที่วางจำหน่าย

ข้อมูลโค้ดต่อไปนี้แสดงออบเจ็กต์ movie ที่มีพร็อพเพอร์ตี้ 2 รายการ ได้แก่ movieTitle และ releaseDate

{
  "objectDefinitions": [
    {
      "name": "movie",
      "propertyDefinitions": [
        {
          "name": "movieTitle",
          "isReturnable": true,
          "isWildcardSearchable": true,
          "textPropertyOptions": {
            "retrievalImportance": { "importance": "HIGHEST" },
            "operatorOptions": {
              "operatorName": "title"
            }
          },
          "displayOptions": {
            "displayLabel": "Title"
          }
        },
        {
          "name": "releaseDate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "released",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          },
          "displayOptions": {
            "displayLabel": "Release date"
          }
      ...
      ]
    }
  ]
}

PropertyDefinition ประกอบด้วยรายการต่อไปนี้

  • สตริง name
  • รายการตัวเลือกแบบไม่ต้องพึ่งพิงประเภท เช่น isReturnable ข้อมูลเพิ่มเติม
  • ประเภทและตัวเลือกเฉพาะประเภทที่เกี่ยวข้อง เช่น textPropertyOptions และ retrievalImportance ในข้อมูลโค้ดก่อนหน้า
  • operatorOptions ที่อธิบายว่าพร็อพเพอร์ตี้ถูกใช้เป็น โอเปอเรเตอร์การค้นหา
  • displayOptions อย่างน้อย 1 รายการ เช่น displayLabel ในข้อมูลโค้ดก่อนหน้า

name ของพร็อพเพอร์ตี้ต้องไม่ซ้ำกันภายในออบเจ็กต์ที่มี แต่สามารถใช้ชื่อเดียวกันในออบเจ็กต์และออบเจ็กต์ย่อยอื่นๆ ในรูปที่ 1 มีการกำหนดชื่อและวันที่เผยแพร่ของภาพยนตร์ไว้ 2 ครั้ง คือ 1 ครั้งในออบเจ็กต์ movie และอีกครั้งในออบเจ็กต์ย่อย filmography ของ ออบเจ็กต์ person รายการ สคีมานี้ใช้ช่อง movieTitle ซ้ำ เพื่อให้สคีมาสามารถรองรับพฤติกรรมการค้นหา 2 ประเภทดังนี้

  • แสดงผลการค้นหาภาพยนตร์เมื่อผู้ใช้ค้นหาชื่อภาพยนตร์
  • แสดงผลการค้นหาบุคคลเมื่อผู้ใช้ค้นหาชื่อภาพยนตร์ ที่นักแสดงคนนั้นเล่นด้วย

ในทํานองเดียวกัน สคีมาจะใช้ช่อง releaseDate ซ้ำเนื่องจากมีช่องเดียวกัน หมายถึงช่อง movieTitle ทั้ง 2 ช่อง

ในการพัฒนาสคีมาของคุณเอง ลองพิจารณาความสัมพันธ์ของที่เก็บของคุณ ที่มีข้อมูลที่คุณต้องการประกาศมากกว่า 1 ครั้งในสคีมา

เพิ่มตัวเลือกที่เข้าใจได้โดยไม่จำเป็นต้องเข้าใจการพิมพ์

PropertyDefinition แสดงรายการตัวเลือกฟังก์ชันการค้นหาทั่วไปที่มีอยู่ในพร็อพเพอร์ตี้ทั้งหมด ข้อมูลทุกประเภท

  • isReturnable - ระบุว่าพร็อพเพอร์ตี้ระบุข้อมูลที่ควรจะเป็นหรือไม่ ซึ่งแสดงในผลการค้นหาผ่าน API ข้อความค้นหา ภาพยนตร์ตัวอย่างทั้งหมด สามารถแสดงผล สามารถใช้พร็อพเพอร์ตี้ที่คืนสินค้าไม่ได้สำหรับการค้นหา หรือจัดอันดับผลการค้นหาโดยไม่แสดงแก่ผู้ใช้
  • isRepeatable - ระบุว่าพร็อพเพอร์ตี้นั้นอนุญาตให้มีหลายค่าหรือไม่ สำหรับ เช่น ภาพยนตร์มีวันที่เผยแพร่เพียงวันเดียว แต่มีนักแสดงหลายคนได้
  • isSortable - ระบุว่าพร็อพเพอร์ตี้นี้ใช้จัดเรียงได้ ช่วงเวลานี้ ไม่สามารถเป็น "จริง" สำหรับพร็อพเพอร์ตี้ที่ซ้ำกันได้ เช่น ผลการค้นหาภาพยนตร์ อาจจัดเรียงตามวันที่เผยแพร่หรือการจัดประเภทผู้ชม
  • isFacetable - ระบุว่าสามารถใช้พร็อพเพอร์ตี้ในการสร้างข้อมูลประกอบ ข้อมูลประกอบใช้เพื่อปรับแต่งการค้นหา ผลลัพธ์ขั้นต้น จากนั้นเพิ่มเกณฑ์หรือข้อมูลประกอบ เพื่อปรับแต่ง ผลลัพธ์ ตัวเลือกนี้ไม่สามารถเป็นจริงสำหรับพร็อพเพอร์ตี้ที่มีประเภทเป็นออบเจ็กต์และ isReturnable ต้องเป็น "จริง" เพื่อตั้งค่าตัวเลือกนี้ สุดท้าย ตัวเลือกนี้มีเพียง รองรับคุณสมบัติ enum, บูลีน และข้อความ ตัวอย่างเช่น ในสคีมาตัวอย่าง เราอาจสร้าง genre, actorName, userRating และ mpaaRating Facetable เพื่ออนุญาต ใช้สำหรับการปรับแต่งผลการค้นหาแบบอินเทอร์แอกทีฟ
  • isWildcardSearchable ระบุว่าผู้ใช้สามารถใช้สัญลักษณ์การค้นหาสำหรับ พร็อพเพอร์ตี้นี้ ตัวเลือกนี้ใช้ได้เฉพาะกับคุณสมบัติของข้อความเท่านั้น ไวลด์การ์ด การค้นหาจะทำงานในฟิลด์ข้อความได้ ขึ้นอยู่กับค่าที่ตั้งไว้ในฟิลด์ exactMatchWithOperator หากตั้งค่า exactMatchWithOperator เป็น true ค่าข้อความจะแปลงเป็นโทเค็นเป็นค่าอะตอม 1 ค่า และการค้นหาไวลด์การ์ด ที่ดำเนินการกับเนื้อหานั้น เช่น หากค่าข้อความคือ science-fiction มีคำค้นหาไวลด์การ์ด science-* ที่ตรงกัน หากตั้งค่า exactMatchWithOperator เป็น false ระบบจะแปลงค่าข้อความเป็นโทเค็นและจะใช้การค้นหาโดยใช้สัญลักษณ์ตัวแทนกับ แต่ละรายการ เช่น หากค่าข้อความคือ "science-fition" ไวลด์การ์ด การค้นหา sci* หรือ fi* ตรงกับรายการ แต่ science-* ไม่ตรงกับรายการ

พารามิเตอร์ฟังก์ชันการค้นหาทั่วไปเหล่านี้เป็นค่าบูลีนทั้งหมด พวกเขา ทั้งหมดมีค่าเริ่มต้นเป็น false และต้องตั้งค่าเป็น true ที่จะนำไปใช้

ตารางต่อไปนี้แสดงพารามิเตอร์บูลีนที่ตั้งค่าเป็น true สำหรับพร็อพเพอร์ตี้ทั้งหมดของออบเจ็กต์ movie ดังนี้

พร็อพเพอร์ตี้ isReturnable isRepeatable isSortable isFacetable isWildcardSearchable
movieTitle จริง จริง
releaseDate จริง จริง
genre จริง จริง จริง
duration จริง
actorName จริง จริง จริง จริง
userRating จริง จริง
mpaaRating จริง จริง

ทั้ง genre และ actorName ตั้งค่า isRepeatable เป็น true เนื่องจากภาพยนตร์อาจมี มากกว่า 1 ประเภทและมักมี นักแสดงมากกว่า 1 คน ไม่สามารถจัดเรียงพร็อพเพอร์ตี้ได้หากเป็นพร็อพเพอร์ตี้ซ้ำ หรืออยู่ในออบเจ็กต์ย่อยที่ซ้ำได้

กำหนดประเภท

PropertyDefinition ส่วนการอ้างอิงจะแสดง xxPropertyOptions หลายรายการโดยที่ xx เป็นประเภทที่เฉพาะเจาะจง เช่น boolean หากต้องการตั้งค่าประเภทข้อมูลของพร็อพเพอร์ตี้ คุณต้องกำหนด ออบเจ็กต์ประเภทข้อมูลที่เหมาะสม การกำหนดออบเจ็กต์ประเภทข้อมูลสำหรับพร็อพเพอร์ตี้ กำหนดประเภทข้อมูลของพร็อพเพอร์ตี้นั้น ตัวอย่างเช่น การกำหนด textPropertyOptions สำหรับพร็อพเพอร์ตี้ movieTitle บ่งชี้ว่าภาพยนตร์ ชื่อเป็นข้อความประเภท ข้อมูลโค้ดต่อไปนี้แสดงพร็อพเพอร์ตี้ movieTitle โดยตั้งค่าประเภทข้อมูลด้วย textPropertyOptions

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    ...
  },
  ...
},

พร็อพเพอร์ตี้หนึ่งมีข้อมูลเชื่อมโยงได้เพียงประเภทเดียว เช่น ในภาพยนตร์ของเรา สคีมา releaseDate ต้องเป็นวันที่เท่านั้น (เช่น 2016-01-13) หรือสตริง (เช่น January 13, 2016) แต่ไม่ใช่ทั้ง 2 อย่าง

นี่คือออบเจ็กต์ประเภทข้อมูลที่ใช้ระบุประเภทข้อมูลสำหรับข้อมูล ในสคีมาภาพยนตร์ตัวอย่าง

พร็อพเพอร์ตี้ ออบเจ็กต์ประเภทข้อมูล
movieTitle textPropertyOptions
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions
mpaaRating textPropertyOptions

ประเภทข้อมูลที่คุณเลือกสําหรับพร็อพเพอร์ตี้จะขึ้นอยู่กับ Use Case ที่คาดไว้ ในสถานการณ์ที่จินตนาการไว้ของสคีมาภาพยนตร์นี้ ผู้ใช้คาดหวังว่า ต้องการจัดเรียงผลการค้นหาตามลำดับเวลา ดังนั้น releaseDate จึงเป็นออบเจ็กต์วันที่ เช่น หากมีกรณีการใช้งานที่คาดไว้สำหรับการเปรียบเทียบรุ่นต่างๆ ในเดือนธันวาคม ในช่วงหลายปีที่ผ่านมา เมื่อมีการเปิดตัวในเดือนมกราคม รูปแบบสตริงก็อาจมีประโยชน์

กำหนดค่าตัวเลือกที่เจาะจงประเภท

PropertyDefinition ส่วนอ้างอิงจะลิงก์ไปยังตัวเลือกสำหรับแต่ละประเภท เจาะจงประเภทมากที่สุด เป็นตัวเลือก ยกเว้นรายการ possibleValues ใน enumPropertyOptions นอกจากนี้ ตัวเลือก orderedRanking ยังทำให้คุณสามารถ จัดอันดับค่าที่เกี่ยวข้องกัน ข้อมูลโค้ดต่อไปนี้แสดงพร็อพเพอร์ตี้ movieTitle ที่มี textPropertyOptions การตั้งค่าประเภทข้อมูลและตัวเลือกเฉพาะประเภท retrievalImportance

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    ...
  },
  ...
}

ตัวเลือกเฉพาะประเภทเพิ่มเติมที่ใช้ในสคีมาตัวอย่างมีดังนี้

พร็อพเพอร์ตี้ ประเภท ตัวเลือกเฉพาะประเภท
movieTitle textPropertyOptions retrievalImportance
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions orderedRanking maximumValue
mpaaRating textPropertyOptions

กำหนดตัวเลือกโอเปอเรเตอร์

นอกจากตัวเลือกที่เจาะจงประเภทแล้ว แต่ละประเภทยังมีชุดตัวเลือก operatorOptions ตัวเลือกเหล่านี้อธิบายวิธีใช้พร็อพเพอร์ตี้เป็น โอเปอเรเตอร์การค้นหา ข้อมูลโค้ดต่อไปนี้แสดงพร็อพเพอร์ตี้ movieTitle ที่มี textPropertyOptions ตั้งค่าประเภทข้อมูลและ ตัวเลือกเฉพาะประเภท retrievalImportance และ operatorOptions

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
      "operatorName": "title"
    }
  },
  ...
}

ทุก operatorOptions มี operatorName เช่น title สำหรับ movieTitle ชื่อโอเปอเรเตอร์คือโอเปอเรเตอร์การค้นหาสำหรับพร็อพเพอร์ตี้ ต โอเปอเรเตอร์การค้นหาคือพารามิเตอร์จริงที่คุณคาดว่าผู้ใช้จะใช้ เมื่อจำกัดขอบเขตการค้นหา ตัวอย่างเช่น ในการค้นหาภาพยนตร์ตามชื่อ ผู้ใช้จะพิมพ์ title:movieName โดยที่ movieName คือชื่อของภาพยนตร์

ชื่อโอเปอเรเตอร์ไม่จำเป็นต้องเหมือนกับชื่อพร็อพเพอร์ตี้ แต่ คุณควรใช้ชื่อโอเปอเรเตอร์ที่แสดงถึงคำทั่วไปที่ใช้ ตามผู้ใช้ในองค์กร ตัวอย่างเช่น หากผู้ใช้ของคุณชอบคำนี้ "ชื่อ" แทน "title" ชื่อภาพยนตร์ ชื่อโอเปอเรเตอร์ควรเป็น ตั้งค่าเป็น "name"

คุณสามารถใช้ชื่อโอเปอเรเตอร์เดียวกันสำหรับพร็อพเพอร์ตี้หลายรายการ จะแปลค่าเป็นประเภทเดียวกัน เมื่อใช้ชื่อโอเปอเรเตอร์ที่ใช้ร่วมกันระหว่าง คำค้นหา ระบบจะดึงข้อมูลพร็อพเพอร์ตี้ทั้งหมดที่ใช้ชื่อโอเปอเรเตอร์ดังกล่าว ตัวอย่างเช่น สมมติว่าออบเจ็กต์ภาพยนตร์มี plotSummary และ plotSynopsis พร็อพเพอร์ตี้ และแต่ละพร็อพเพอร์ตี้เหล่านี้มี operatorName เป็น plot อาส ตราบใดที่คุณสมบัติทั้งสองนี้เป็นข้อความ (textPropertyOptions) การค้นหาโดยใช้โอเปอเรเตอร์การค้นหา plot จะดึงข้อมูลทั้งคู่

นอกเหนือจาก operatorName พร็อพเพอร์ตี้ที่จัดเรียงได้ lessThanOperatorName และ greaterThanOperatorName ใน operatorOptions ผู้ใช้สามารถใช้ตัวเลือกเหล่านี้เพื่อสร้างการสืบค้นโดยเปรียบเทียบกับ ค่าที่ส่ง

สุดท้าย textOperatorOptions มีช่อง exactMatchWithOperator ใน operatorOptions หากคุณ ตั้งค่า exactMatchWithOperator เป็น true สตริงการค้นหาต้อง ตรงกับค่าของพร็อพเพอร์ตี้ทั้งหมด ไม่ใช่เฉพาะในข้อความเท่านั้น ค่าข้อความจะถือว่าเป็นค่าอะตอม 1 ค่าในการค้นหาโอเปอเรเตอร์และ ข้อมูลประกอบที่ตรงกัน

เช่น ลองจัดทำดัชนีออบเจ็กต์หนังสือหรือภาพยนตร์ด้วยพร็อพเพอร์ตี้ประเภท ประเภทข่าวอาจรวมถึง "นิยายวิทยาศาสตร์" "วิทยาศาสตร์" และ "เรื่องแต่ง" ด้วย exactMatchWithOperator ได้รับการตั้งค่าเป็น false หรือละเว้น ค้นหาแนวเพลงหรือ กำลังเลือกช่องทำเครื่องหมาย "วิทยาศาสตร์" หรือ "เรื่องแต่ง" ข้อมูลประกอบก็จะ แสดงผลการค้นหาสำหรับ "นิยายวิทยาศาสตร์" เนื่องจากข้อความถูกแปลงข้อมูลเป็นโทเค็นและ "วิทยาศาสตร์" และ "เรื่องแต่ง" มีโทเค็นอยู่ใน "นิยายวิทยาศาสตร์" เมื่อexactMatchWithOperatorคือtrue ข้อความนั้นจะถือว่าเป็นโทเค็นเดียว ดังนั้นทั้ง 2 อย่าง "วิทยาศาสตร์" หรือ "นิยาย" ตรงกับ "Science-Fiction"

(ไม่บังคับ) เพิ่มส่วน displayOptions

ส่วน displayOptions จะมีหรือไม่ก็ได้ในตอนท้าย propertyDefinition ส่วนนี้ประกอบด้วยสตริง displayLabel 1 รายการ displayLabel คือป้ายกำกับข้อความที่แนะนำและใช้ง่าย สำหรับพร็อพเพอร์ตี้ หากมีการกําหนดค่าพร็อพเพอร์ตี้สําหรับการแสดงผลโดยใช้ ObjectDisplayOptions, ป้ายกำกับนี้จะแสดงด้านหน้าพร็อพเพอร์ตี้ หากมีการกําหนดค่าพร็อพเพอร์ตี้ สำหรับดิสเพลย์และ displayLabel ไม่ได้กำหนด จะมีเพียงค่าพร็อพเพอร์ตี้เท่านั้น แสดงอยู่

ข้อมูลโค้ดต่อไปนี้แสดงพร็อพเพอร์ตี้ movieTitle ที่มี displayLabel ตั้งค่าเป็น "ชื่อ"

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
       "operatorName": "title"
    }
},
  "displayOptions": {
    "displayLabel": "Title"
  }
},

ต่อไปนี้คือค่า displayLabel สำหรับพร็อพเพอร์ตี้ทั้งหมดของ movie ในสคีมาตัวอย่าง

พร็อพเพอร์ตี้ displayLabel
movieTitle Title
releaseDate Release date
genre Genre
duration Run length
actorName Actor
userRating Audience score
mpaaRating MPAA rating

(ไม่บังคับ) เพิ่มส่วน suggestionFilteringOperators[]

มีตัวเลือก suggestionFilteringOperators[] ที่อยู่ท้ายส่วน propertyDefinition ใช้ส่วนนี้เพื่อ กำหนดพร็อพเพอร์ตี้ที่ใช้กรองคำแนะนำที่เติมข้อความอัตโนมัติ ตัวอย่างเช่น คุณสามารถ อาจกำหนดโอเปอเรเตอร์ของ genre เพื่อกรองคำแนะนำตาม ประเภทภาพยนตร์ที่ต้องการ จากนั้น เมื่อผู้ใช้พิมพ์คำค้นหาของตน จะมีเฉพาะ ภาพยนตร์ที่ตรงกับประเภทที่ต้องการจะแสดงเป็นส่วนหนึ่งของการเติมข้อความอัตโนมัติ แนะนำ

ลงทะเบียนสคีมา

หากต้องการให้ข้อมูลที่มีโครงสร้างแสดงผลจากคำค้นหา Cloud Search คุณต้องลงทะเบียน สคีมาของคุณกับบริการสคีมาของ Cloud Search ต้องมีการลงทะเบียนสคีมา รหัสแหล่งข้อมูลที่คุณได้รับในระหว่าง ขั้นตอนเริ่มต้นแหล่งข้อมูล

ใช้รหัสแหล่งข้อมูล ออก UpdateSchema ขอลงทะเบียนสคีมาของคุณ

ตามรายละเอียดเกี่ยวกับ UpdateSchema หน้าอ้างอิง ออกคำขอ HTTP ต่อไปนี้เพื่อลงทะเบียนสคีมา

PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema

ส่วนเนื้อหาของคำขอควรมีข้อมูลต่อไปนี้

{
  "validateOnly": // true or false,
  "schema": {
    // ... Your complete schema object ...
  }
}

ใช้ตัวเลือก validateOnly เพื่อทดสอบความถูกต้องของสคีมา การลงทะเบียนอุปกรณ์ด้วยตัวเอง

จัดทำดัชนีข้อมูลของคุณ

เมื่อลงทะเบียนสคีมาแล้ว ให้เติมแหล่งข้อมูลโดยใช้ ดัชนี การจัดทำดัชนีมักจะทำในเครื่องมือเชื่อมต่อเนื้อหา

เมื่อใช้สคีมาภาพยนตร์ คำขอจัดทำดัชนี REST API สำหรับภาพยนตร์ 1 เรื่อง ซึ่งจะมีลักษณะดังนี้

{
  "name": "datasource/<data_source_id>/items/titanic",
  "acl": {
    "readers": [
      {
        "gsuitePrincipal": {
          "gsuiteDomain": true
        }
      }
    ]
  },
  "metadata": {
    "title": "Titanic",
    "sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [
        {
          "name": "movieTitle",
          "textValues": {
            "values": [
              "Titanic"
            ]
          }
        },
        {
          "name": "releaseDate",
          "dateValues": {
            "values": [
              {
                "year": 1997,
                "month": 12,
                "day": 19
              }
            ]
          }
        },
        {
          "name": "actorName",
          "textValues": {
            "values": [
              "Leonardo DiCaprio",
              "Kate Winslet",
              "Billy Zane"
            ]
          }
        },
        {
          "name": "genre",
          "enumValues": {
            "values": [
              "Drama",
              "Action"
            ]
          }
        },
        {
          "name": "userRating",
          "integerValues": {
            "values": [
              8
            ]
          }
        },
        {
          "name": "mpaaRating",
          "textValues": {
            "values": [
              "PG-13"
            ]
          }
        },
        {
          "name": "duration",
          "textValues": {
            "values": [
              "3 h 14 min"
            ]
          }
        }
      ]
    }
  },
  "content": {
    "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
    "contentFormat": "TEXT"
  },
  "version": "01",
  "itemType": "CONTENT_ITEM"
}

ดูว่าค่า movie ในช่อง objectType ตรงกับวัตถุอย่างไร ชื่อคำจำกัดความในสคีมา การจับคู่ 2 ค่านี้ทำให้ Cloud Search ทราบว่า ออบเจ็กต์สคีมาที่จะใช้ระหว่างการจัดทำดัชนี

โปรดทราบด้วยว่าวิธีการจัดทําดัชนีของพร็อพเพอร์ตี้สคีมา releaseDate เป็นอย่างไร พร็อพเพอร์ตี้ย่อยของ year, month และ day ที่รับช่วงมาเนื่องจาก ถือเป็นข้อมูล date ประเภทผ่านการใช้ datePropertyOptions ในการกำหนด แต่เนื่องจากไม่ได้กำหนด year, month และ day ในสคีมาไว้ ค้นหาพร็อพเพอร์ตี้รายการใดรายการหนึ่งไม่ได้ (เช่น year) แยกกัน

และสังเกตวิธีจัดทำดัชนีพร็อพเพอร์ตี้ที่ซ้ำได้ actorName โดยใช้ลิสต์ มูลค่า

การระบุปัญหาที่อาจเกิดขึ้นกับการจัดทำดัชนี

ปัญหาที่พบบ่อยที่สุด 2 ประการเกี่ยวกับสคีมาและการจัดทำดัชนี ได้แก่

  • คำขอจัดทำดัชนีของคุณมีออบเจ็กต์สคีมาหรือชื่อพร็อพเพอร์ตี้ที่ไม่ใช่ ที่ลงทะเบียนไว้กับบริการสคีมาแล้ว ปัญหานี้ทำให้พร็อพเพอร์ตี้หรือออบเจ็กต์ ที่จะละเว้น

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

ทดสอบสคีมาด้วยคำค้นหาหลายประเภท

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

หากต้องการสร้างอินเทอร์เฟซการค้นหาเพื่อตรวจสอบความถูกต้องของคำค้นหา โปรดดู อินเทอร์เฟซการค้นหา

ส่วนนี้ประกอบด้วยตัวอย่างการค้นหาต่างๆ มากมายที่คุณอาจใช้เพื่อทดสอบ สคีมาภาพยนตร์

ทดสอบด้วยคำค้นหาทั่วไป

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

ทดสอบกับโอเปอเรเตอร์

การเพิ่มโอเปอเรเตอร์ลงในการค้นหาจะจำกัดผลลัพธ์ให้เหลือเพียงรายการที่ตรงกับคำค้นหานั้น ค่าโอเปอเรเตอร์ เช่น คุณอาจต้องการใช้โอเปอเรเตอร์ actor เพื่อค้นหา ภาพยนตร์ทั้งหมด ที่มีนักแสดงคนใดคนหนึ่ง เมื่อใช้อินเทอร์เฟซการค้นหา คุณจะสามารถดำเนินการ คุณจะค้นหาโอเปอเรเตอร์นี้ได้ง่ายๆ โดยพิมพ์คู่ Operator=value เช่น &quot;actor:Zane&quot; และกด &quot;actor:Zane&quot; ภาพยนตร์ทั้งหมดที่มี Zane เป็นนักแสดง ควรจะปรากฏในผลการค้นหา

ปรับแต่งสคีมาของคุณ

หลังจากมีการใช้สคีมาและข้อมูลแล้ว ให้ตรวจสอบสิ่งที่ใช้งานได้ต่อไป และทำงานกับผู้ใช้ไม่ได้ คุณควรพิจารณาปรับสคีมาในสถานการณ์ต่อไปนี้

  • การจัดทําดัชนีช่องที่ไม่เคยมีการจัดทำดัชนีมาก่อน ตัวอย่างเช่น ผู้ใช้ของคุณ อาจค้นหาภาพยนตร์ซ้ำๆ โดยใช้ชื่อผู้กำกับ คุณจึงอาจ ปรับสคีมาเพื่อรองรับชื่อผู้อำนวยการเป็นโอเปอเรเตอร์
  • การเปลี่ยนชื่อโอเปอเรเตอร์การค้นหาตามความคิดเห็นของผู้ใช้ ชื่อโอเปอเรเตอร์คือ ควรใช้งานง่าย หากผู้ใช้ "จำ" อย่างสม่ำเสมอ ผิด คุณอาจพิจารณาเปลี่ยนชื่อ

การจัดทำดัชนีอีกครั้งหลังการเปลี่ยนแปลงสคีมา

การเปลี่ยนค่าต่อไปนี้ในสคีมาไม่กำหนดให้คุณต้อง จัดทำดัชนีข้อมูลอีกครั้ง คุณเพียงแค่ส่ง UpdateSchema และดัชนีของคุณจะยังคงทำงานต่อไป:

  • ชื่อโอเปอเรเตอร์
  • จำนวนเต็มต่ำสุดและสูงสุด
  • การจัดอันดับแบบเรียงตามลำดับจำนวนเต็มและ enum
  • ตัวเลือกความใหม่
  • ตัวเลือกการแสดงผล

สำหรับการเปลี่ยนแปลงต่อไปนี้ ข้อมูลที่จัดทำดัชนีไว้ก่อนหน้านี้จะยังคงทำงานต่อไป ตามสคีมาที่ลงทะเบียนไว้ก่อนหน้านี้ อย่างไรก็ตาม คุณจะต้องจัดทำดัชนีอีกครั้ง รายการที่มีอยู่เพื่อดูการเปลี่ยนแปลงตามสคีมาที่อัปเดต หากมี การเปลี่ยนแปลง:

  • การเพิ่มหรือนําพร็อพเพอร์ตี้หรือออบเจ็กต์ใหม่ออก
  • กำลังเปลี่ยน isReturnable, isFacetable หรือ isSortable จาก false เป็น true

คุณควรตั้งค่า isFacetable หรือ isSortable เป็น true เฉพาะเมื่อคุณมี กรณีการใช้งานและความต้องการที่ชัดเจน

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

การเปลี่ยนแปลงพร็อพเพอร์ตี้ที่ไม่อนุญาต

ไม่อนุญาตให้เปลี่ยนแปลงสคีมาบางอย่าง แม้ว่าคุณจะจัดทำดัชนีข้อมูลอีกครั้งแล้วก็ตาม เนื่องจากการเปลี่ยนแปลงดังกล่าว จะทำให้ดัชนีเสียหายหรือสร้างผลการค้นหาที่ไม่ดีหรือไม่สม่ำเสมอ เหล่านี้ รวมการเปลี่ยนแปลงกับ:

  • ประเภทข้อมูลพร็อพเพอร์ตี้
  • ชื่อพร็อพเพอร์ตี้
  • การตั้งค่า exactMatchWithOperator
  • การตั้งค่า retrievalImportance

อย่างไรก็ตาม ก็มีวิธีการหลีกเลี่ยงข้อจำกัดนี้

เปลี่ยนแปลงสคีมาที่ซับซ้อน

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

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

ขั้นตอนต่อไปนี้แสดงวิธีเปลี่ยนประเภทข้อมูลหรือชื่อของพร็อพเพอร์ตี้

  1. เพิ่มพร็อพเพอร์ตี้ใหม่ลงในคำจำกัดความของออบเจ็กต์ในสคีมา ใช้ จากพร็อพเพอร์ตี้ที่คุณต้องการเปลี่ยนแปลง
  2. ออก UpdateSchema ที่มีการกำหนดใหม่ อย่าลืมส่งสคีมาทั้งหมด ซึ่งรวมถึง ทั้งพร็อพเพอร์ตี้ใหม่และเก่าในคำขอ
  3. ทดแทนดัชนีจากที่เก็บข้อมูล หากต้องการทดแทนดัชนี ให้ส่งทั้งหมด คำขอให้จัดทำดัชนีโดยใช้พร็อพเพอร์ตี้ใหม่ แต่ไม่ใช่พร็อพเพอร์ตี้ พร็อพเพอร์ตี้เก่า เนื่องจากจะทำให้เกิดการนับคู่ข้อความค้นหาซ้ำ

    1. ในระหว่างการทดแทนการจัดทำดัชนี ให้ตรวจสอบพร็อพเพอร์ตี้ใหม่และ เป็นค่าเริ่มต้นของพร็อพเพอร์ตี้เดิมเพื่อหลีกเลี่ยงลักษณะการทำงานที่ไม่สอดคล้องกัน
    2. หลังจากโฆษณาทดแทนเสร็จสมบูรณ์แล้ว ให้เรียกใช้การค้นหาทดสอบเพื่อยืนยัน
  4. ลบพร็อพเพอร์ตี้เดิม ออกรายการอื่น UpdateSchema คำขอที่ไม่มีชื่อพร็อพเพอร์ตี้เก่าและเลิกใช้พร็อพเพอร์ตี้เก่า ชื่อในคำขอจัดทำดัชนีในอนาคต

  5. ย้ายข้อมูลการใช้งานพร็อพเพอร์ตี้เดิมไปยังพร็อพเพอร์ตี้ใหม่ ตัวอย่างเช่น หาก คุณเปลี่ยนชื่อพร็อพเพอร์ตี้จากผู้สร้างเป็นผู้เขียน คุณต้องอัปเดตคำค้นหา รหัสเพื่อใช้ผู้เขียนที่ก่อนหน้านี้อ้างอิงถึงผู้สร้าง

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

ทราบข้อจำกัดด้านขนาด

Cloud Search กำหนดขีดจำกัดขนาดของออบเจ็กต์และสคีมาของข้อมูลที่มีโครงสร้าง ขีดจำกัดเหล่านี้ ได้แก่

  • จำนวนออบเจ็กต์ระดับบนสุดสูงสุดคือ 10 ออบเจ็กต์
  • ความลึกสูงสุดของลำดับชั้นข้อมูลที่มีโครงสร้างคือ 10 ระดับ
  • จำนวนช่องทั้งหมดในออบเจ็กต์จำกัดไว้ที่ 1,000 ช่อง ซึ่งรวมถึงจำนวนฟิลด์พื้นฐานกับผลรวมของจำนวน ในแต่ละออบเจ็กต์ที่ซ้อนอยู่

ขั้นตอนถัดไป

ขั้นตอนถัดไปที่คุณทำได้มีดังนี้

  1. สร้างอินเทอร์เฟซการค้นหาเพื่อ ทดสอบสคีมาของคุณ

  2. ปรับแต่งสคีมาเพื่อปรับปรุงคุณภาพการค้นหา

  3. จัดโครงสร้างสคีมาเพื่อการแปลความหมายการค้นหาที่มีประสิทธิภาพสูงสุด

  4. เรียนรู้วิธีการใช้ประโยชน์จาก _dictionaryEntry สคีมาที่จะกำหนด คำพ้องความหมายสำหรับคำที่ใช้กันโดยทั่วไปในบริษัทของคุณ วิธีใช้ _dictionaryEntry สคีมา, อ้างอิงถึง กำหนดคำพ้องความหมาย

  5. สร้างเครื่องมือเชื่อมต่อ