क्वेरी एपीआई की मदद से खोज इंटरफ़ेस बनाना

क्वेरी एपीआई, खोज इंटरफ़ेस बनाने या किसी ऐप्लिकेशन में नतीजे एम्बेड करने के लिए, खोज और सुझाव देने के तरीके उपलब्ध कराता है.

कम से कम ज़रूरी शर्तों वाले वेब ऐप्लिकेशन के लिए, खोज विजेट का इस्तेमाल करें. खोज विजेट की मदद से, खोज इंटरफ़ेस बनाना लेख पढ़ें.

खोज इंटरफ़ेस बनाना

कम से कम ज़रूरी शर्तों वाला खोज इंटरफ़ेस बनाने के लिए, ये चरण पूरे करें:

  1. खोज ऐप्लिकेशन कॉन्फ़िगर करना.
  2. ऐप्लिकेशन के लिए OAuth क्रेडेंशियल जनरेट करना.
  3. इंडेक्स के लिए क्वेरी करना.
  4. क्वेरी के नतीजे दिखाना.

पेजिंग, क्रम से लगाना, फ़िल्टर करना, फ़ैसेट, और अपने-आप पूरा होने की सुविधा जैसी सुविधाओं की मदद से, इंटरफ़ेस को बेहतर बनाया जा सकता है.

खोज ऐप्लिकेशन कॉन्फ़िगर करना

हर खोज इंटरफ़ेस के लिए, कम से कम एक खोज ऐप्लिकेशन बनाना ज़रूरी है. खोज ऐप्लिकेशन, डिफ़ॉल्ट पैरामीटर उपलब्ध कराता है. जैसे, डेटा सोर्स, क्रम से लगाने का तरीका, फ़िल्टर, और फ़ैसेट. क्वेरी एपीआई का इस्तेमाल करके, इन पैरामीटर को बदला जा सकता है.

खोज ऐप्लिकेशन में कॉन्फ़िगर किए गए डेटा सोर्स के अलावा, क्वेरी में इस्तेमाल किए जाने वाले डेटा सोर्स की संख्या नहीं बढ़ाई जा सकती. 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 के लिए, यह मैसेज दिखाया जा सकता है: "आपकी खोज के लिए कोई नतीजा नहीं मिला. मिलती-जुलती क्वेरी के नतीजे दिखाए जा रहे हैं."

लोगों से जुड़े नतीजे हैंडल करना

Cloud Search, People 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: बदलाव की तारीख के लिए.

सुझाव जोड़ना

क्वेरी के इतिहास, संपर्कों, और दस्तावेज़ के कॉन्टेंट के आधार पर, अपने-आप पूरा होने की सुविधा के लिए, सुझाव देने वाले एपीआई का इस्तेमाल करें.