क्वेरी एपीआई की मदद से, खोज इंटरफ़ेस बनाया जा सकता है. साथ ही, किसी ऐप्लिकेशन में खोज के नतीजे एम्बेड किए जा सकते हैं. इसके लिए, क्वेरी एपीआई में खोज और सुझाव देने के तरीके उपलब्ध हैं.
अगर वेब ऐप्लिकेशन के लिए कम से कम ज़रूरी शर्तें पूरी की गई हैं, तो खोज विजेट का इस्तेमाल करें. खोज विजेट की मदद से, खोज इंटरफ़ेस बनाने का तरीका देखें .
खोज इंटरफ़ेस बनाना
कम से कम ज़रूरी शर्तों के हिसाब से खोज इंटरफ़ेस बनाने के लिए, यह तरीका अपनाएं:
- खोज ऐप्लिकेशन को कॉन्फ़िगर करें.
- ऐप्लिकेशन के लिए OAuth क्रेडेंशियल जनरेट करें.
- इंडेक्स के लिए क्वेरी करें.
- क्वेरी के नतीजे दिखाएं.
पेज नंबर, क्रम से लगाना, फ़िल्टर करना, फ़ैसेट, और अपने-आप पूरी होने वाली क्वेरी जैसी सुविधाओं की मदद से, इंटरफ़ेस को बेहतर बनाया जा सकता है.
खोज ऐप्लिकेशन को कॉन्फ़िगर करना
हर खोज इंटरफ़ेस के लिए, कम से कम एक खोज ऐप्लिकेशन बनाना ज़रूरी है. खोज ऐप्लिकेशन, डिफ़ॉल्ट पैरामीटर उपलब्ध कराता है. जैसे, डेटा सोर्स, क्रम से लगाने का तरीका, फ़िल्टर, और फ़ैसेट. क्वेरी एपीआई का इस्तेमाल करके, इन पैरामीटर को बदला जा सकता है.
खोज ऐप्लिकेशन में कॉन्फ़िगर किए गए डेटा सोर्स के अलावा, क्वेरी में इस्तेमाल किए जाने वाले डेटा सोर्स की संख्या नहीं बढ़ाई जा सकती. dataSourceRestrictions का इस्तेमाल करके, क्वेरी को इन सोर्स के सबसेट तक सीमित किया जा सकता है.
ज़्यादा जानकारी के लिए, खोज के अनुभव को पसंद के मुताबिक बनाना देखें.
ऐप्लिकेशन के लिए OAuth क्रेडेंशियल जनरेट करना
Cloud Search API के लिए ऐक्सेस कॉन्फ़िगर करने के तरीके के अलावा, आपको अपने वेब ऐप्लिकेशन के लिए OAuth क्रेडेंशियल जनरेट करने होंगे.
क्रेडेंशियल का इस्तेमाल करके, उपयोगकर्ता की ओर से अनुमति का अनुरोध करें. https://www.googleapis.com/auth/cloud_search.query स्कोप का इस्तेमाल करें.
OAuth के विकल्पों के बारे में ज़्यादा जानने के लिए, Google Identity Platform देखें.
इंडेक्स के लिए क्वेरी करना
इंडेक्स में खोजने के लिए, search
तरीके का इस्तेमाल करें.
हर अनुरोध में, query टेक्स्ट और searchApplicationId शामिल होना चाहिए.
इस उदाहरण में, किसी फ़िल्म के डेटा सोर्स के लिए क्वेरी की गई है:
{
"query": "titanic",
"requestOptions": {
"searchApplicationId": "searchapplications/<search_app_id>"
}
}
क्वेरी के नतीजे दिखाना
खोज इंटरफ़ेस में, आइटम का title और ओरिजनल आइटम का लिंक दिखना चाहिए. डिस्प्ले को बेहतर बनाने के लिए, स्निपेट और मेटाडेटा का भी इस्तेमाल किया जा सकता है.
अतिरिक्त नतीजे हैंडल करना
किसी क्वेरी के लिए, ज़रूरत के मुताबिक नतीजे न मिलने पर, Cloud Search अतिरिक्त नतीजे दिखाता है.
queryInterpretation
फ़ील्ड से इसकी जानकारी मिलती है. अगर सिर्फ़ अतिरिक्त नतीजे मिलते हैं, तो InterpretationType की वैल्यू REPLACE होती है. अगर नतीजे मिलाकर दिखाए जाते हैं, तो `InterpretationType` की वैल्यू BLEND होती है.
अतिरिक्त नतीजे दिखाते समय, उपयोगकर्ता को इसकी जानकारी दें. REPLACE के लिए, यह मैसेज दिखाया जा सकता है: "आपकी खोज के लिए कोई नतीजा नहीं मिला. मिलती-जुलती क्वेरी के नतीजे दिखाए जा रहे हैं."
लोगों से जुड़े नतीजे हैंडल करना
People Search सुविधा का इस्तेमाल करके, Cloud Search लोगों और कर्मचारियों की जानकारी से जुड़े दस्तावेज़ दिखाता है. नतीजे,
structuredResults
फ़ील्ड में दिखते हैं:
{
"results": [...],
"structuredResults": [{
"person": {...}
}]
}
डायरेक्ट रिपोर्ट मैचिंग
डायरेक्ट रिपोर्ट मैचिंग की मदद से, उपयोगकर्ता यह देख सकते हैं कि कोई व्यक्ति सीधे तौर पर किसे रिपोर्ट करता है. जवाब में, cardType की वैल्यू RELATED_PEOPLE_ANSWER_CARD के साथ assistCardProtoHolder शामिल होता है.
ऑप्टिमाइज़ेशन बंद करना
अतिरिक्त नतीजों जैसे ऑप्टिमाइज़ेशन, डिफ़ॉल्ट रूप से चालू होते हैं. इन्हें बंद किया जा सकता है:
- खोज ऐप्लिकेशन के लेवल पर:
force_verbatim_modeकोtrueपर सेट करें. - क्वेरी के लेवल पर:
enableVerbatimModeकोtrueपर सेट करें.
स्निपेट हाइलाइट करना
Cloud Search, इंडेक्स किए गए टेक्स्ट या एचटीएमएल के लिए स्निपेट दिखाता है. अगर क्वेरी के शब्द मौजूद हैं, तो matchRanges उनकी जगह की पहचान करता है. टेक्स्ट को हाइलाइट करने के लिए, इन रेंज का इस्तेमाल करें.
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
}
]
}
नतीजे के तौर पर मिलने वाली एचटीएमएल स्ट्रिंग यह है:
This is an <span class="highlight">example</span> snippet...
मेटाडेटा दिखाना
metadata
फ़ील्ड का इस्तेमाल करें, जैसे createTime, updateTime, और स्ट्रक्चर्ड डेटा जैसी जानकारी के लिए.
स्ट्रक्चर्ड डेटा दिखाने के लिए, displayOptions
का इस्तेमाल करें.
अतिरिक्त नतीजे पाना
ज़्यादा नतीजे पाने के लिए, start
फ़ील्ड को चुने गए ऑफ़सेट पर सेट करें. pageSize की मदद से, पेज का साइज़ अडजस्ट करें. कुल आइटम या अनुमानित संख्या दिखाने के लिए, resultCount का इस्तेमाल करें.
नतीजों को क्रम से लगाना
क्रम तय करने के लिए,
sortOptions
का इस्तेमाल करें:
operatorName: वह प्रॉपर्टी जिसके हिसाब से क्रम से लगाना है.sortOrder:ASCENDINGयाDESCENDING.
रेलेवंस, डिफ़ॉल्ट और सेकंडरी सॉर्ट की होती है.
फ़िल्टर जोड़ना
खोज ऐप्लिकेशन या अनुरोध में फ़िल्टर का इस्तेमाल करके, नतीजों को सीमित करें. अगर दोनों में किसी सोर्स के लिए फ़िल्टर तय किए गए हैं, तो दोनों की वैल्यू 'सही' होनी चाहिए.
dataSourceRestrictions.filterOptions[] में फ़िल्टर लागू करें.
प्राइमरी फ़िल्टर के टाइप:
- ऑब्जेक्ट फ़िल्टर: मैच को किसी खास टाइप तक सीमित करें.
- वैल्यू फ़िल्टर: किसी ऑपरेटर और वैल्यू के आधार पर, मैच को सीमित करें.
कंपोज़िट फ़िल्टर एक से ज़्यादा वैल्यू फ़िल्टर को जोड़ते हैं.
फ़ैसेट की मदद से नतीजों को बेहतर बनाना
फ़ैसेट की मदद से, उपयोगकर्ता क्वेरी को इंटरैक्टिव तरीके से बेहतर बना सकते हैं. फ़ैसेट का अनुरोध करने पर, Cloud Search उन प्रॉपर्टी के लिए सबसे ज़्यादा इस्तेमाल की जाने वाली वैल्यू की गिनती करता है.
आम तौर पर इस्तेमाल होने वाला पैटर्न: 1. क्वेरी में फ़ैसेट प्रॉपर्टी तय करना. 1. खोज और फ़ैसेट के नतीजे रेंडर करना. 1. उपयोगकर्ता, फ़ैसेट की वैल्यू चुनता है. 1. चुनी गई वैल्यू के आधार पर फ़िल्टर के साथ क्वेरी दोहराना.
इंटीजर-आधारित फ़ील्ड के साथ फ़ैसेट के नतीजे
रेंज के हिसाब से नतीजों को बेहतर बनाने के लिए, किसी इंटीजर प्रॉपर्टी को फ़ैसेट के तौर पर मार्क करें. जैसे, "100-200" पेज. isFacetable को true पर सेट करें और स्कीमा में डिफ़ॉल्ट बकेटिंग के विकल्प तय करें.
दस्तावेज़ के साइज़ या तारीख के हिसाब से फ़ैसेट के नतीजे
रिज़र्व किए गए ऑपरेटर का इस्तेमाल करें :
itemsize: बाइट में फ़ाइल के साइज़ के लिए.createddatetimestamp: बनाने की तारीख के लिए.lastmodified: बदलाव की तारीख के लिए.
सुझाव जोड़ना
क्वेरी के इतिहास, संपर्कों, और दस्तावेज़ के कॉन्टेंट के आधार पर, अपने-आप पूरी होने वाली क्वेरी की सुविधा के लिए, सुझाव देने वाले एपीआई का इस्तेमाल करें.