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

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

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

सर्च इंटरफ़ेस बनाना

कम से कम सुविधाओं वाला खोज इंटरफ़ेस बनाने के लिए, ये चरण पूरे करने होते हैं:

  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 है. अगर वे ब्लेंड किए गए हैं, तो BLEND पर टैप करें.

अतिरिक्त नतीजे दिखाते समय, उपयोगकर्ता को इसकी जानकारी दें. REPLACE के लिए, ऐसा कहा जा सकता है: "आपकी खोज से कोई नतीजा नहीं मिला. मिलती-जुलती क्वेरी के नतीजे दिखाए जा रहे हैं."

लोगों के लिए नतीजे मिलने की सुविधा को मैनेज करना

Cloud Search, People Search सुविधा का इस्तेमाल करके, लोगों और कर्मचारियों की जानकारी से जुड़े दस्तावेज़ दिखाता है. नतीजे, structuredResults फ़ील्ड में दिखते हैं:

{
  "results": [...],
  "structuredResults": [{
    "person": {...}
  }]
}

डायरेक्ट रिपोर्ट का मिलान करना

'सीधे तौर पर रिपोर्ट करने वाले लोगों की जानकारी' सुविधा की मदद से, उपयोगकर्ता यह देख सकते हैं कि कोई व्यक्ति किसे सीधे तौर पर रिपोर्ट करता है. जवाब में, assistCardProtoHolder के साथ cardType के तौर पर RELATED_PEOPLE_ANSWER_CARD शामिल है.

ऑप्टिमाइज़ेशन की सेटिंग बंद करना

पूरक नतीजों जैसे ऑप्टिमाइज़ेशन की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इन्हें बंद किया जा सकता है:

  • ऐप्लिकेशन लेवल पर खोज करना: 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...

डिसप्ले मेटाडेटा

createTime, updateTime, और स्ट्रक्चर्ड डेटा जैसी जानकारी के लिए, metadata फ़ील्ड का इस्तेमाल करें. स्ट्रक्चर्ड डेटा दिखाने के लिए, displayOptions का इस्तेमाल करें.

अन्य नतीजे पाना

ज़्यादा नतीजे पाने के लिए, start फ़ील्ड को चुने गए ऑफ़सेट पर सेट करें. pageSize की मदद से पेज के साइज़ में बदलाव करें. कुल आइटम या अनुमानित संख्या दिखाने के लिए, resultCount का इस्तेमाल करें.

नतीजों को क्रम से लगाएं

ऑर्डर तय करने के लिए, sortOptions का इस्तेमाल करें:

  • operatorName: वह प्रॉपर्टी जिसके हिसाब से क्रम से लगाना है.
  • sortOrder: ASCENDING या DESCENDING.

नतीजे कितने काम के हैं, यह डिफ़ॉल्ट और सेकंडरी सॉर्ट की है.

फ़िल्टर जोड़ना

खोज के लिए इस्तेमाल किए जा रहे ऐप्लिकेशन या अनुरोध में, फ़िल्टर लगाकर नतीजों को सीमित करें. अगर दोनों में किसी सोर्स के लिए फ़िल्टर तय किए गए हैं, तो दोनों का आकलन 'सही' के तौर पर होना चाहिए.

dataSourceRestrictions.filterOptions[] में फ़िल्टर लागू करें. प्राइमरी फ़िल्टर टाइप:

  • ऑब्जेक्ट फ़िल्टर: मैच को किसी खास टाइप तक सीमित करते हैं.
  • वैल्यू फ़िल्टर: ऑपरेटर और वैल्यू के आधार पर मैच को सीमित करते हैं.

कंपोज़िट फ़िल्टर कई वैल्यू फ़िल्टर को एक साथ जोड़ते हैं.

फ़ैसेट की मदद से नतीजों को बेहतर बनाना

फ़ैसेट की मदद से, उपयोगकर्ता क्वेरी को इंटरैक्टिव तरीके से बेहतर बना सकते हैं. फ़ैसेट का अनुरोध करने पर, Cloud Search उन प्रॉपर्टी के लिए सबसे ज़्यादा बार इस्तेमाल की गई वैल्यू का हिसाब लगाता है.

सामान्य पैटर्न: 1. फ़ेसट प्रॉपर्टी के बारे में जानकारी देने वाली क्वेरी. 1. खोज और फ़ैसेट के नतीजे रेंडर करता है. 1. उपयोगकर्ता, फ़ैसेट की वैल्यू चुनता है. 1. चुने गए विकल्पों के आधार पर, फ़िल्टर के साथ क्वेरी को दोहराएं.

पूर्णांक पर आधारित फ़ील्ड के हिसाब से, फ़ैसेट के नतीजे

किसी पूर्णांक प्रॉपर्टी को फ़ैसेट के तौर पर मार्क करें, ताकि रेंज के हिसाब से नतीजों को बेहतर बनाया जा सके. उदाहरण के लिए, "100-200" पेजों) के लिए. isFacetable को true पर सेट करें और स्कीमा में डिफ़ॉल्ट बकेटिंग के विकल्प तय करें.

दस्तावेज़ के साइज़ या तारीख के हिसाब से नतीजों को फ़ेसट करना

आरक्षित ऑपरेटर का इस्तेमाल करें:

  • itemsize: बाइट में फ़ाइल के साइज़ के लिए.
  • createddatetimestamp: कॉन्टेंट बनाए जाने की तारीख के लिए.
  • lastmodified: बदलाव की तारीख के लिए.

सुझाव जोड़ना

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