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

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

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

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

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

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

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

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

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

सर्च ऐप्लिकेशन के बारे में ज़्यादा जानने के लिए, Cloud Search में सर्च करने के अनुभव को पसंद के मुताबिक बनाएं लेख पढ़ें.

ऐप्लिकेशन के लिए OAuth क्रेडेंशियल जनरेट करना

Google Cloud Search API का ऐक्सेस कॉन्फ़िगर करना में दिए गए चरणों के अलावा, आपको वेब ऐप्लिकेशन के लिए OAuth क्रेडेंशियल भी जनरेट करने होंगे. आपके बनाए गए क्रेडेंशियल का टाइप, इस बात पर निर्भर करता है कि एपीआई का इस्तेमाल किस संदर्भ में किया जा रहा है.

उपयोगकर्ता की ओर से अनुमति का अनुरोध करने के लिए, क्रेडेंशियल का इस्तेमाल करें. अनुमति का अनुरोध करते समय, स्कोप https://www.googleapis.com/auth/cloud_search.query का इस्तेमाल करें.

OAuth के विकल्पों और क्लाइंट लाइब्रेरी के बारे में ज़्यादा जानकारी के लिए, [Google Identity Platform](https://developers.google.com/identity/choose-auth{: .external target="_blank"} देखें.

इंडेक्स से क्वेरी करना

इंडेक्स में खोज करने के लिए, search तरीके का इस्तेमाल करें.

हर अनुरोध में दो तरह की जानकारी शामिल होनी चाहिए: एक ऐसा टेक्स्ट query जिससे आइटम का मिलान किया जा सके और searchApplicationId, जो इस्तेमाल किए जाने वाले खोज ऐप्लिकेशन के आईडी की पहचान करता हो.

नीचे दिए गए स्निपेट में, टाइटैनिक फ़िल्म के डेटा सोर्स के लिए क्वेरी दिखाई गई है:

{
  "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, "लोगों से जुड़े नतीजे" दो तरह से दिखाता है: क्वेरी में इस्तेमाल किए गए नाम वाले व्यक्ति से जुड़े दस्तावेज़ और क्वेरी में इस्तेमाल किए गए नाम वाले व्यक्ति की कर्मचारी जानकारी. इस तरह के नतीजे, Cloud Search की People Search सुविधा की वजह से मिलते हैं. इस तरह की क्वेरी के नतीजे, क्वेरी एपीआई के जवाब के structuredResults फ़ील्ड में देखे जा सकते हैं:

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

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

'सीधे तौर पर रिपोर्ट करने वाले लोगों से जुड़ी जानकारी', Cloud Search की People Search सुविधा का हिस्सा है. इसकी मदद से, उपयोगकर्ता अपने संगठन के किसी व्यक्ति को सीधे तौर पर रिपोर्ट करने वाले लोगों की जानकारी देख सकते हैं. नतीजा, structuredResults फ़ील्ड में उपलब्ध है.

किसी व्यक्ति के मैनेजर या सीधे तौर पर रिपोर्ट करने वाले लोगों के बारे में की गई क्वेरी के जवाब में, structuredResults के अंदर assistCardProtoHolder होता है. 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 पर सेट करें.

स्निपेट हाइलाइट करना

इंडेक्स किए गए टेक्स्ट या एचटीएमएल कॉन्टेंट वाले आइटम लौटाने पर, कॉन्टेंट का स्निपेट दिखाया जाता है. इस कॉन्टेंट से लोगों को यह तय करने में मदद मिलती है कि खोज के नतीजों में दिखाया गया आइटम उनके काम का है या नहीं.

अगर स्निपेट में क्वेरी के शब्द मौजूद हैं, तो एक या उससे ज़्यादा मैच रेंज भी दिखाई जाती हैं. इनसे शब्दों की जगह की पहचान होती है.

नतीजे रेंडर करते समय, मेल खाने वाले टेक्स्ट को हाइलाइट करने के लिए matchRanges का इस्तेमाल करें. नीचे दिए गए JavaScript के उदाहरण में, स्निपेट को एचटीएमएल मार्कअप में बदला गया है. इसमें, मैच करने वाली हर रेंज को <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
    }
  ]
}

इससे मिलने वाली एचटीएमएल स्ट्रिंग यह है:

This is an <span class="highlight">example</span> snippet...

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

metadata फ़ील्ड का इस्तेमाल करके, लौटाए गए आइटम के बारे में ज़्यादा जानकारी दिखाएं. यह जानकारी, लोगों के लिए काम की हो सकती है. metadata फ़ील्ड में, आइटम का createTime और updateTime शामिल होता है. साथ ही, इसमें आइटम से जुड़ा ऐसा स्ट्रक्चर्ड डेटा भी शामिल होता है जिसे लौटाया जा सकता है.

स्ट्रक्चर्ड डेटा दिखाने के लिए, displayOptions फ़ील्ड का इस्तेमाल करें. displayOptions फ़ील्ड में, ऑब्जेक्ट टाइप के लिए डिसप्ले लेबल और metalines का सेट होता है. हर मेटललाइन, डिसप्ले लेबल और वैल्यू पेयर का एक कलेक्शन होती है. इसे स्कीमा में कॉन्फ़िगर किया जाता है.

ज़्यादा नतीजे पाना

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

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

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

sortOptions फ़ील्ड का इस्तेमाल करके, लौटाए गए सामानों का क्रम तय करें. sortOptions वैल्यू, दो फ़ील्ड वाला ऑब्जेक्ट है:

  • operatorName — स्ट्रक्चर्ड डेटा प्रॉपर्टी के लिए एक ऑपरेटर, जिसके हिसाब से क्रम से लगाया जा सकता है. एक से ज़्यादा ऑपरेटर वाली प्रॉपर्टी के लिए, सिर्फ़ मुख्य समानता ऑपरेटर का इस्तेमाल करके क्रम से लगाया जा सकता है.
  • sortOrder — क्रम से लगाने की दिशा, ASCENDING या DESCENDING.

प्रासंगिकता को सेकंडरी सॉर्ट की के तौर पर भी इस्तेमाल किया जाता है. अगर किसी क्वेरी में क्रम से लगाने का कोई तरीका नहीं बताया गया है, तो नतीजों को सिर्फ़ काम के होने के आधार पर रैंक किया जाता है.

"sortOptions": {
  "operatorName": "priority",
  "sortOrder": "DESCENDING"
}

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

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

किसी अनुरोध या खोज ऐप्लिकेशन में फ़िल्टर जोड़ने के लिए, dataSourceRestrictions.filterOptions[] फ़ील्ड में फ़िल्टर जोड़ें.

डेटा सोर्स को फ़िल्टर करने के दो मुख्य तरीके हैं:

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

आम तौर पर, फ़ैसेट के साथ इंटरैक्ट करने का पैटर्न यह होता है:

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

उदाहरण के लिए, साल और MPAA रेटिंग के हिसाब से फ़िल्मों की क्वेरी को बेहतर बनाने के लिए, क्वेरी में facetOptions प्रॉपर्टी शामिल करें.

"facetOptions": [
  {
    "sourceName": "datasources/<data_source_id>",
    "operatorName": "year"
  },
  {
    "sourceName": "datasources/<data_source_id>",
    "operatorName": "rated"
  }
]

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

पूर्णांक पर आधारित फ़ील्ड का इस्तेमाल करके, अनुरोध के नतीजों को भी फ़ेसट किया जा सकता है. उदाहरण के लिए, "100 से 200" पेज वाली किताबों के बारे में खोज के नतीजों को बेहतर बनाने के लिए, book_pages नाम की पूर्णांक प्रॉपर्टी को फ़ेसटेबल के तौर पर मार्क किया जा सकता है.

इंटीजर प्रॉपर्टी फ़ील्ड का स्कीमा सेट अप करते समय, isFacetable को true पर सेट करें. साथ ही, integerPropertyOptions में इससे जुड़े बकेटिंग के विकल्प जोड़ें. इससे यह पक्का होता है कि पूर्णांक वाली हर फ़ैसेट की जा सकने वाली प्रॉपर्टी के लिए, डिफ़ॉल्ट बकेटिंग के विकल्प तय किए गए हों.

बकेटिंग के विकल्पों का लॉजिक तय करते समय, रेंज दिखाने वाली बढ़ती वैल्यू का ऐरे दें. उदाहरण के लिए, अगर असली उपयोगकर्ता रेंज को 2, 5, 10, 100 के तौर पर तय करता है, तो <2, [2-5), [5-10), [10-100), >=100 के लिए फ़ैसेट का हिसाब लगाया जाता है.

अनुरोध में facetOptions के लिए बकेटिंग के एक जैसे विकल्प तय करके, पूर्णांक पर आधारित फ़ैसेट को बदला जा सकता है. अगर ज़रूरी हो, तो Cloud Search, स्कीमा में तय किए गए बकेटिंग के विकल्पों का इस्तेमाल करता है. ऐसा तब होता है, जब न तो सर्च ऐप्लिकेशन और न ही क्वेरी के अनुरोध में फ़ैसेट के विकल्प तय किए गए हों. क्वेरी में तय किए गए फ़ैसेट को, खोज ऐप्लिकेशन में तय किए गए फ़ैसेट के मुकाबले प्राथमिकता दी जाती है. साथ ही, खोज ऐप्लिकेशन में तय किए गए फ़ैसेट को, स्कीमा में तय किए गए फ़ैसेट के मुकाबले प्राथमिकता दी जाती है.

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

आरक्षित ऑपरेटर का इस्तेमाल करके, खोज के नतीजों को बेहतर बनाया जा सकता है. इसके लिए, दस्तावेज़ के फ़ाइल साइज़ (बाइट में) या दस्तावेज़ के बनाए जाने या उसमें बदलाव किए जाने की तारीख का इस्तेमाल करें. आपको कस्टम स्कीमा तय करने की ज़रूरत नहीं है. हालांकि, आपको अपने सर्च ऐप्लिकेशन के FacetOptions में operatorName वैल्यू तय करनी होगी.

  • दस्तावेज़ के साइज़ के हिसाब से फ़ेसटिंग करने के लिए, itemsize का इस्तेमाल करें और बकेटिंग के विकल्प तय करें.
  • दस्तावेज़ बनाए जाने की तारीख के हिसाब से फ़ेसटिंग करने के लिए, createddatetimestamp का इस्तेमाल करें.
  • दस्तावेज़ में बदलाव करने की तारीख के हिसाब से फ़ेसटिंग करने के लिए, lastmodified का इस्तेमाल करें.

फ़ैसेट बकेट की व्याख्या करना

खोज क्वेरी के जवाब में मौजूद facetResults प्रॉपर्टी में, उपयोगकर्ता के फ़िल्टर करने के अनुरोध की सटीक जानकारी शामिल होती है. यह जानकारी, हर bucket के लिए filter फ़ील्ड में मौजूद होती है.

पूर्णांकों पर आधारित नहीं होने वाले फ़ैसेट के लिए, facetResults में अनुरोध की गई हर प्रॉपर्टी के लिए एक एंट्री शामिल होती है. हर प्रॉपर्टी के लिए, वैल्यू या रेंज की एक सूची दी जाती है. इसे buckets कहा जाता है. सबसे ज़्यादा बार आने वाली वैल्यू सबसे पहले दिखती हैं.

जब कोई उपयोगकर्ता फ़िल्टर करने के लिए एक या उससे ज़्यादा वैल्यू चुनता है, तो चुने गए फ़िल्टर के साथ एक नई क्वेरी बनाएं. इसके बाद, एपीआई से फिर से क्वेरी करें.

सुझाव जोड़ना

उपयोगकर्ता की निजी क्वेरी के इतिहास के साथ-साथ संपर्कों और उनके दस्तावेज़ों के आधार पर क्वेरी को अपने-आप पूरा करने की सुविधा देने के लिए, suggest API का इस्तेमाल करें.

उदाहरण के लिए, यहां दिया गया कॉल, jo वाक्यांश के लिए सुझाव देता है.

{
  "query": "jo",
  "requestOptions": {
    "searchApplicationId": "<search_app_id>",
    "peoplePhotoOptions": {
      "peoplePhotoUrlSizeInPx": 32
    },
    "timeZone": "America/Denver"
  }
}

इसके बाद, अपने ऐप्लिकेशन के हिसाब से, नतीजों के तौर पर मिले सुझावों को दिखाया जा सकता है.