Query API มีวิธีการค้นหาและแนะนำสำหรับการสร้างการค้นหา อินเทอร์เฟซหรือการฝังผลการค้นหาในแอปพลิเคชัน
สำหรับเว็บแอปพลิเคชันที่มีความต้องการขั้นต่ำ ให้ลองใช้วิดเจ็ต Search สำหรับข้อมูลเพิ่มเติม โปรดดู สร้างอินเทอร์เฟซการค้นหาด้วยวิดเจ็ต Search
สร้างอินเทอร์เฟซการค้นหา
การสร้างอินเทอร์เฟซการค้นหาที่เรียบง่ายมีขั้นตอนหลายขั้นตอนดังนี้
- กำหนดค่าแอปพลิเคชันการค้นหา
- สร้างข้อมูลเข้าสู่ระบบ OAuth สำหรับแอปพลิเคชัน
- ค้นหาดัชนี
- แสดงผลการค้นหา
คุณสามารถเพิ่มประสิทธิภาพอินเทอร์เฟซการค้นหาได้เพิ่มเติมด้วยฟีเจอร์ต่างๆ เช่น การแบ่งหน้า การจัดเรียง การกรอง ข้อมูลประกอบ และการแนะนำอัตโนมัติ
กำหนดค่าแอปพลิเคชันการค้นหา
คุณต้องสร้างแอปพลิเคชันการค้นหาอย่างน้อย 1 รายการเพื่อเชื่อมโยงกับแต่ละรายการ ของอินเทอร์เฟซการค้นหาที่คุณสร้าง แอปพลิเคชันการค้นหาจะมีค่าเริ่มต้น พารามิเตอร์สำหรับการค้นหา เช่น แหล่งข้อมูลที่จะใช้ ลำดับการจัดเรียง และข้อมูลประกอบที่จะขอได้ คุณลบล้างพารามิเตอร์เหล่านี้ได้ หากจำเป็น โดยใช้ API การค้นหา
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับแอปพลิเคชันการค้นหา โปรดไปที่ ปรับแต่งประสบการณ์การค้นหาใน Cloud Search
สร้างข้อมูลเข้าสู่ระบบ OAuth สำหรับแอปพลิเคชัน
นอกเหนือจากขั้นตอนใน กำหนดค่าการเข้าถึง Google Cloud Search API คุณต้องสร้างข้อมูลเข้าสู่ระบบ OAuth สำหรับเว็บแอปพลิเคชันด้วย ประเภท ของข้อมูลเข้าสู่ระบบที่คุณสร้างจะขึ้นอยู่กับบริบทที่ใช้ API
ใช้ข้อมูลเข้าสู่ระบบเพื่อส่งคำขอให้สิทธิ์ในนามของผู้ใช้ ใช้เมนู
ขอบเขต https://www.googleapis.com/auth/cloud_search.query
เมื่อส่งคำขอ
การกันวงเงิน
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือก OAuth และไลบรารีของไคลเอ็นต์ได้ที่ [Google Identity Platform](https://developers.google.com/identity/choose-auth{: .external target="_blank"}
ค้นหาดัชนี
ใช้search
ในการค้นหาดัชนี
คำขอทุกรายการต้องมีข้อมูล 2 รายการ ได้แก่ ข้อความ query
เพื่อจับคู่รายการกับ searchApplicationId
ที่ระบุรหัสสำหรับ
แอปพลิเคชันการค้นหาที่จะใช้
ตัวอย่างต่อไปนี้แสดงคำค้นหาแหล่งข้อมูลภาพยนตร์ของภาพยนตร์เรื่อง Titanic
{
"query": "titanic",
"requestOptions": {
"searchApplicationId": "searchapplications/<search_app_id>"
},
}
แสดงผลการค้นหา
อย่างน้อยที่สุด อินเทอร์เฟซการค้นหาควรแสดงรายการ title
เป็น
และลิงก์ไปยังรายการต้นฉบับ คุณสามารถเพิ่มประสิทธิภาพการแสดง
ผลการค้นหาโดยใช้ประโยชน์จากข้อมูลเพิ่มเติมที่ปรากฏในผลการค้นหา
เช่น ข้อมูลโค้ดและข้อมูลเมตา
จัดการผลลัพธ์เสริม
โดยค่าเริ่มต้น Cloud Search จะแสดงผลลัพธ์เสริมเมื่อมี
ผลลัพธ์ไม่เพียงพอสำหรับการค้นหาของผู้ใช้
queryInterpretation
ในการตอบกลับจะระบุเมื่อมีการแสดงผลลัพธ์เสริม หากเพียง
ระบบแสดงผลผลลัพธ์เสริม โดยตั้งค่า InterpretationType
เป็น REPLACE
ถ้า
ผลลัพธ์บางรายการสำหรับการค้นหาเดิมจะแสดงขึ้นพร้อมกับผลลัพธ์เสริม
ผลลัพธ์ InterpretationType
ได้รับการตั้งค่าเป็น BLEND
ไม่ว่าจะเป็นกรณีใด
QueryInterpretation.Reason = NOT_ENOUGH_RESULTS_FOUND_FOR_USER_QUERY
เมื่อมีการแสดงผลการค้นหาเสริมบางรายการ ให้ลองระบุข้อความ
เพื่อระบุว่ามีการส่งกลับผลลัพธ์เสริม ตัวอย่างเช่น ในกรณีของ
REPLACE
คุณอาจแสดงสตริง "การค้นหาเดิมของคุณแสดง
ไม่ตรงกับผลการค้นหาใดๆ กำลังแสดงผลการค้นหาสำหรับคำค้นหาที่คล้ายกัน"
ในกรณีของ BLEND
คุณอาจแสดงสตริง "การค้นหาของคุณสำหรับ
ข้อความค้นหาเดิมไม่ตรงกับผลการค้นหาที่เพียงพอ รวมผลการค้นหาสำหรับ
การค้นหา"
จัดการผลการค้นหาบุคคล
Cloud Search จะแสดง "ผลการค้นหาบุคคล" 2 ประเภท ได้แก่ เอกสารที่เกี่ยวข้องกับ
บุคคลที่มีชื่อในข้อความค้นหาและข้อมูลพนักงานสำหรับบุคคลหนึ่งๆ
ที่ใช้ชื่อในการค้นหา ผลลัพธ์ประเภทหลังคือฟังก์ชันของระบบคลาวด์
คุณลักษณะการค้นหาบุคคลของ Search และผลลัพธ์สำหรับคำค้นหาดังกล่าวจะปรากฏใน
เวลา
structuredResults
ของการตอบกลับ API การค้นหา
{
"results": [...],
"structuredResults": [{
"person": {...}
}]
}
การจับคู่ผู้ใต้บังคับบัญชา
การจับคู่รายงานโดยตรง คือฟีเจอร์การค้นหาบุคคลของ Cloud Search ซึ่งช่วยให้
ผู้ใช้จะเห็นผู้ใต้บังคับบัญชาของผู้ใช้ในองค์กรโดยตรง
ผลลัพธ์จะอยู่ในช่อง structuredResults
สำหรับคำถามเกี่ยวกับผู้จัดการหรือผู้ใต้บังคับบัญชาของบุคคล คำตอบจะมี
assistCardProtoHolder
ภายใน structuredResults
assistCardProtoHolder
มีฟิลด์ชื่อ cardType
ซึ่งเท่ากับ
RELATED_PEOPLE_ANSWER_CARD
assistCardProtoHolder
มีบัตร
ที่เรียกว่า relatedPeopleAnswerCard
ซึ่งมีคำตอบจริง
ข้อความนี้มี subject
(บุคคลที่รวมอยู่ในการค้นหา) และ
relatedPeople
ซึ่งเป็นกลุ่มบุคคลที่เกี่ยวข้องกับเรื่องดังกล่าว
ช่อง relationType
แสดงผลค่า MANAGER
หรือ DIRECT_REPORTS
โค้ดต่อไปนี้แสดงตัวอย่างการตอบกลับสำหรับการรายงานโดยตรงที่ตรงกัน ข้อความค้นหา:
{
"results": [],
"structuredResults": [{
"assistCardProtoHolder": {
"extensions": {
"@type": "type.googleapis.com/enterprise.topaz.sidekick.AssistCardProto",
"cardMetadata": {
"cardCategory": "ANSWER"
},
"cardType": "RELATED_PEOPLE_ANSWER_CARD",
"relatedPeopleAnswerCard": {
"subject": {
"email": "AdamStanford@psincs-test01.newjnj.com",
"displayName": "Adam Stanford"
"manager": {
"email": "simonsais@psincs-test01.newjnj.com"
}
},
"relatedPeople": [{
"email": "EdgarMountainRamirez@psincs-test01.newjnj.com",
"displayName": "Edgar Mountain Ramirez"
}, {
"email": "FranciscoJoseMartinez@psincs-test01.newjnj.com",
"displayName": "Francisco Jose Martinez"
}],
"relationType": "DIRECT_REPORTS",
}
}
}
}]
}
ปิดการเพิ่มประสิทธิภาพ รวมถึงผลลัพธ์เสริม
โดยค่าเริ่มต้น ระบบจะเปิดใช้การเพิ่มประสิทธิภาพ เช่น ผลลัพธ์เสริม คุณสามารถ แต่ปิดการเพิ่มประสิทธิภาพทั้งหมด หรือปิดเฉพาะผลลัพธ์เสริมที่ แอปพลิเคชันการค้นหาและระดับข้อความค้นหา:
หากต้องการปิดการเพิ่มประสิทธิภาพทั้งหมดในระดับแอปพลิเคชันการค้นหา รวมถึง เช่น ผลลัพธ์เสริม คำพ้องความหมาย และการแก้ไขตัวสะกด
QueryInterpretationConfig.force_verbatim_mode
true
ในแอปพลิเคชันการค้นหาหากต้องการปิดการเพิ่มประสิทธิภาพทั้งหมดในระดับคำค้นหา รวมถึง ผลลัพธ์เสริม คำพ้องความหมาย และการแก้ไขตัวสะกด
QueryInterpretationOptions.enableVerbatimMode
true
ในคำค้นหาหากต้องการปิดผลการค้นหาเสริมที่ระดับแอปพลิเคชันการค้นหา ให้ตั้งค่า
QueryInterpretationOptions.forceDisableSupplementalResults
true
ในคำค้นหาหากต้องการปิดผลการค้นหาเสริมที่ระดับคำค้นหา ให้ตั้งค่า
QueryInterpretationOptions.disableSupplementalResults
true
ในคำค้นหา
ตัวอย่างไฮไลต์
สำหรับรายการที่ส่งคืนซึ่งมีข้อความที่จัดทำดัชนีหรือเนื้อหา HTML ข้อมูลโค้ด ของเนื้อหานั้น เนื้อหานี้ช่วยให้ผู้ใช้ทราบว่า ความเกี่ยวข้องของสินค้าที่ส่งคืน
หากมีข้อความค้นหาในข้อมูลโค้ด ช่วงการจับคู่อย่างน้อย 1 ช่วงที่ระบุ จะแสดงตำแหน่งของคำนั้นด้วย
ใช้ matchRanges
เพื่อไฮไลต์ข้อความที่ตรงกันเมื่อแสดงผล
ผลลัพธ์ ตัวอย่าง JavaScript ต่อไปนี้จะแปลงข้อมูลโค้ดเป็น
มาร์กอัป HTML ที่มีช่วงที่ตรงกันแต่ละช่วงซึ่งรวมไว้ในแท็ก <span>
function highlightSnippet(snippet) {
let text = snippet.snippet;
let formattedText = text;
if (snippet.matchRanges) {
let parts = [];
let index = 0;
for (let match of snippet.matchRanges) {
let start = match.start || 0; // Default to 0 if omitted
let end = match.end;
if (index < start) { // Include any leading text before/between ranges
parts.push(text.slice(index, start));
}
parts.push('<span class="highlight">');
parts.push(text.slice(start, end));
parts.push('</span>');
index = end;
}
parts.push(text.slice(index)); // Include any trailing text after last range
formattedText = parts.join('');
}
return formattedText;
}
ให้ตัวอย่างข้อมูล:
{
"snippet": "This is an example snippet...",
"matchRanges": [
{
"start": 11,
"end": 18
}
]
}
สตริง HTML ที่ได้คือ
This is an <span class="highlight">example</span> snippet...
ข้อมูลเมตาที่แสดงผล
ใช้metadata
เพื่อแสดงข้อมูลเพิ่มเติมเกี่ยวกับสินค้าที่ส่งคืนซึ่งอาจเกี่ยวข้อง
ให้แก่ผู้ใช้ ฟิลด์ metadata
ประกอบด้วย createTime
และ
updateTime
ของสินค้ารวมถึง Structured Data ทั้งหมดที่ส่งคืนได้ซึ่งเชื่อมโยงกับ
กับสินค้านั้น
หากต้องการแสดงข้อมูลที่มีโครงสร้าง ให้ใช้displayOptions
ด้วย ช่อง displayOptions
มีป้ายกำกับที่แสดงสำหรับประเภทออบเจ็กต์
และชุดของ metalines
ข้อมูลเมตาแต่ละรายการคืออาร์เรย์ของป้ายกำกับที่แสดงและ
คู่ของค่าตามที่กําหนดค่าไว้ในสคีมา
เรียกดูผลลัพธ์เพิ่มเติม
หากต้องการดึงผลลัพธ์เพิ่มเติม ให้ตั้งค่าstart
ในคำขอกับออฟเซ็ตที่ต้องการ คุณสามารถปรับขนาด
ของแต่ละหน้าด้วย pageSize
ด้วย
หากต้องการแสดงจำนวนรายการที่ส่งคืนหรือเพื่อแสดงการควบคุมการแบ่งหน้าสำหรับ
ผ่านรายการส่งคืน ให้ใช้
resultCount
ด้วย ทั้งค่าจริงหรือค่าจริง หรือขึ้นอยู่กับขนาดของชุดผลลัพธ์
มีการระบุมูลค่าโดยประมาณ
จัดเรียงผลลัพธ์
ใช้sortOptions
เพื่อระบุลำดับของสินค้าที่ส่งคืน ค่า sortOptions
เป็นออบเจ็กต์ที่มี 2 ฟิลด์ ได้แก่
operatorName
— โอเปอเรเตอร์สำหรับพร็อพเพอร์ตี้ข้อมูลที่มีโครงสร้างที่จะจัดเรียง สำหรับพร็อพเพอร์ตี้ที่มีโอเปอเรเตอร์หลายรายการ คุณจะจัดเรียงได้โดยใช้ความเทียบเท่าหลักเท่านั้นsortOrder
— ทิศทางการจัดเรียง ไม่ว่าจะเป็นASCENDING
หรือDESCENDING
ความเกี่ยวข้องยังใช้เป็นคีย์การจัดเรียงรองด้วย หากไม่ได้ระบุลำดับการจัดเรียง ในข้อความค้นหา ระบบจะจัดอันดับผลการค้นหาตามความเกี่ยวข้องเท่านั้น
"sortOptions": {
"operatorName": "priority",
"sortOrder": "DESCENDING"
}
เพิ่มตัวกรอง
นอกจากนิพจน์คำค้นหาแล้ว คุณสามารถจำกัดผลลัพธ์เพิ่มเติมได้โดยใช้ ตัวกรอง คุณสามารถระบุตัวกรองได้ทั้งในส่วน แอปพลิเคชันการค้นหา และในคำขอการค้นหา
หากต้องการเพิ่มตัวกรองในคำขอหรือแอปพลิเคชันการค้นหา ให้เพิ่มตัวกรองใน
dataSourceRestrictions.filterOptions[]
การกรองแหล่งข้อมูลเพิ่มเติมมี 2 วิธีหลักดังนี้
- ตัวกรองออบเจ็กต์ผ่านพร็อพเพอร์ตี้
filterOptions[].objectType
- จำกัด การจับคู่รายการกับประเภทที่ระบุตามที่ระบุไว้ในสคีมาที่กำหนดเอง - ตัวกรองค่า — จำกัดรายการที่ตรงกันตาม โอเปอเรเตอร์การค้นหา และค่าที่ระบุ
ตัวกรองแบบผสม ช่วยให้รวมตัวกรองค่าหลายค่าไว้ในนิพจน์เชิงตรรกะได้สำหรับ ที่ซับซ้อนขึ้น
ในตัวอย่างสคีมาภาพยนตร์ คุณสามารถใช้ข้อจำกัดอายุตาม ผู้ใช้ปัจจุบัน และจำกัดภาพยนตร์ที่พร้อมให้บริการตามการจัดประเภทของ MPAA
{
"query": "adventure",
"requestOptions": {
"searchApplicationId": "<search_app_id>"
},
"dataSourceRestrictions": [
{
"source": {
"name": "datasources/<data_source_id>"
},
"filterOptions": [
{
"objectType": "movie",
"filter": {
"compositeFilter": {
"logicOperator": "AND"
"subFilters": [
{
"compositeFilter": {
"logicOperator": "OR"
"subFilters": [
{
"valueFilter": {
"operatorName": "rated",
"value": {
"stringValue": "G"
}
}
},
{
"valueFilter": {
"operatorName": "rated",
"value": {
"stringValue": "PG"
}
}
}
]
}
]
}
}
}
]
}
]
}
ปรับแต่งผลการค้นหาด้วยข้อมูลประกอบ
ข้อมูลประกอบคือพร็อพเพอร์ตี้ที่มีการจัดทำดัชนีซึ่งแสดงหมวดหมู่ของการปรับแต่งการค้นหา รายการ ใช้ข้อมูลประกอบเพื่อช่วยให้ผู้ใช้ปรับแต่งข้อความค้นหาได้แบบอินเทอร์แอกทีฟ และค้นหา รายการที่เกี่ยวข้องได้เร็วขึ้น
คุณสามารถกำหนดข้อมูลประกอบได้ใน แอปพลิเคชันการค้นหา และถูกลบล้างโดยการตั้งค่า ในการค้นหาของคุณ
เมื่อส่งคำขอข้อมูลประกอบ Cloud Search จะคำนวณค่าที่พบมากที่สุดสำหรับ พร็อพเพอร์ตี้ที่ขอในบรรดารายการที่ตรงกัน เหล่านี้ แสดงในคำตอบ ใช้ค่าเหล่านี้เพื่อสร้างตัวกรอง ซึ่งทำให้ผลลัพธ์ในคำค้นหาที่ตามมาแคบลง
รูปแบบการโต้ตอบกับข้อมูลประกอบโดยทั่วไปมีดังนี้
- สร้างการค้นหาเริ่มต้นโดยระบุพร็อพเพอร์ตี้ที่จะรวมไว้ในข้อมูลประกอบ รายการ
- แสดงผลการค้นหาและผลลัพธ์ข้อมูลประกอบ
- ผู้ใช้เลือกค่าข้อมูลประกอบอย่างน้อยหนึ่งค่าเพื่อปรับแต่งผลลัพธ์
- ค้นหาซ้ำโดยใช้ตัวกรองตามค่าที่เลือก
ตัวอย่างเช่น เพื่อให้สามารถปรับแต่งการค้นหาภาพยนตร์ตามปีและการจัดประเภท MPAA
ใส่พร็อพเพอร์ตี้ facetOptions
ในการค้นหา
"facetOptions": [
{
"sourceName": "datasources/<data_source_id>",
"operatorName": "year"
},
{
"sourceName": "datasources/<data_source_id>",
"operatorName": "rated"
}
]
ผลลัพธ์ข้อมูลประกอบที่มีฟิลด์แบบจำนวนเต็ม
นอกจากนี้คุณยังสามารถขอข้อมูลประกอบที่มีฟิลด์แบบจำนวนเต็มได้ ตัวอย่างเช่น คุณสามารถ
อาจทำเครื่องหมายคุณสมบัติจำนวนเต็มที่เรียกว่า book_pages
เป็น Facetable เพื่อปรับแต่ง
ผลลัพธ์สำหรับการค้นหาเกี่ยวกับหนังสือที่มีคำว่า "100-200"
เมื่อตั้งค่าสคีมาฟิลด์พร็อพเพอร์ตี้จำนวนเต็ม ให้ตั้งค่า
isFacetable
ลงใน true
และเพิ่มตัวเลือกการเก็บบันทึกที่เกี่ยวข้องลงในไฟล์
integerPropertyOptions
วิธีนี้ช่วยให้มั่นใจได้ว่าพร็อพเพอร์ตี้ที่เป็นจำนวนเต็มทุกรายการมีที่เก็บข้อมูลเริ่มต้น
ตัวเลือกที่กำหนดไว้
เมื่อกำหนดตรรกะตัวเลือกการเก็บข้อมูล ให้ระบุอาร์เรย์ของค่าที่เพิ่มขึ้น
เป็นช่วงที่มีความหมาย ตัวอย่างเช่น หากผู้ใช้ปลายทางระบุช่วงเป็น
2, 5, 10, 100
จากนั้นข้อมูลประกอบสำหรับ <2
, [2-5)
, [5-10)
, [10-100)
, >=100
มาคำนวณได้
คุณสามารถลบล้างข้อมูลประกอบที่อิงตามจำนวนเต็มได้ด้วยการกำหนดตัวเลือกการเก็บข้อมูลเดียวกันเป็น
facetOptions
ในคำขอ หากจำเป็น Cloud Search จะใช้ตัวเลือกที่เก็บข้อมูลที่ระบุไว้ใน
สคีมาเมื่อทั้งแอปพลิเคชันการค้นหาและคำขอข้อความค้นหาไม่มีข้อมูลประกอบ
ตัวเลือกที่กำหนดไว้ ข้อมูลประกอบที่กำหนดไว้ในคำค้นหามีความสำคัญเหนือกว่าข้อมูลประกอบที่กำหนด
ในแอปพลิเคชันการค้นหา และข้อมูลประกอบที่กำหนดไว้ในแอปพลิเคชันการค้นหาจะ
มีลำดับความสำคัญเหนือกว่าข้อมูลประกอบที่กำหนดไว้ในสคีมา
ผลลัพธ์ข้อมูลประกอบตามขนาดหรือวันที่ของเอกสาร
คุณสามารถใช้
โอเปอเรเตอร์ที่จองไว้
เพื่อปรับแต่งผลการค้นหาตามขนาดไฟล์ของเอกสาร วัดเป็นไบต์ หรือตามเวลา
มีการสร้างหรือแก้ไขเอกสาร คุณไม่จำเป็นต้องกำหนดสคีมาที่กำหนดเอง
แต่คุณต้องระบุค่า operatorName
ในองค์ประกอบ
FacetOptions
- สำหรับการดูข้อมูลประกอบตามขนาดเอกสาร ให้ใช้
itemsize
และกำหนดตัวเลือกที่เก็บข้อมูล - สำหรับการดูข้อมูลประกอบตามวันที่สร้างเอกสาร ให้ใช้
createddatetimestamp
- สำหรับการดูข้อมูลประกอบตามวันที่แก้ไขเอกสาร ให้ใช้
lastmodified
การตีความที่เก็บข้อมูลประกอบ
facetResults
ในการตอบคำถามของคำค้นหาจะรวมคำขอตัวกรองที่ตรงทั้งหมดของผู้ใช้
ในฟิลด์ filter
สำหรับแต่ละรายการ
bucket
สำหรับข้อมูลประกอบที่ไม่ได้อิงตามจำนวนเต็ม facetResults
จะมีรายการสำหรับ
แต่ละพร็อพเพอร์ตี้ที่ขอ สำหรับแต่ละพร็อพเพอร์ตี้ มีรายการค่าหรือช่วงที่เรียกว่า
มีการระบุ buckets
โดยค่าที่เกิดขึ้นบ่อยที่สุดจะแสดงก่อน
เมื่อผู้ใช้เลือกค่าที่จะกรองอย่างน้อย 1 ค่า ให้สร้างคำค้นหาใหม่ด้วย ตัวกรองที่เลือกและค้นหา API อีกครั้ง
เพิ่มคำแนะนำ
ใช้ suggest API เพื่อเติมข้อความอัตโนมัติให้กับข้อความค้นหาตามข้อมูลส่วนบุคคลของผู้ใช้ ประวัติการค้นหาและที่อยู่ติดต่อ และข้อมูลของเอกสาร
ตัวอย่างเช่น การเรียกต่อไปนี้จะให้ข้อเสนอแนะสำหรับ วลี jo
{
"query": "jo",
"requestOptions": {
"searchApplicationId": "<search_app_id>",
"peoplePhotoOptions": {
"peoplePhotoUrlSizeInPx": 32
},
"timeZone": "America/Denver"
}
}
จากนั้น คุณสามารถแสดงคำแนะนำที่ได้ตามความเหมาะสมสำหรับ แอปพลิเคชัน