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

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

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

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

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

  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 कम से कम इस तरह से दिखे ओरिजनल आइटम का लिंक. आप Chrome की स्क्रीन पर, खोज के नतीजों में मौजूद अतिरिक्त जानकारी का इस्तेमाल करके जैसे कि स्निपेट और मेटाडेटा.

अतिरिक्त नतीजों को मैनेज करना

डिफ़ॉल्ट रूप से, Cloud Search पूरक नतीजे तब दिखाता है, जब उपयोगकर्ता की क्वेरी के लिए अपर्याप्त परिणाम. कॉन्टेंट बनाने queryInterpretation जवाब के फ़ील्ड में बताया जाता है कि पूरक नतीजे कब लौटाए जाते हैं. अगर सिर्फ़ अतिरिक्त नतीजे दिखाए जाते हैं, InterpretationType को REPLACE पर सेट किया गया है. अगर आपने ओरिजनल क्वेरी के कुछ नतीजे, पूरक क्वेरी के साथ दिए जाते हैं नतीजे, InterpretationType को BLEND पर सेट किया गया. दोनों ही मामलों में QueryInterpretation.Reason = NOT_ENOUGH_RESULTS_FOUND_FOR_USER_QUERY.

जब कुछ पूरक नतीजे लौटाए जाते हैं, तो टेक्स्ट देने के बारे में सोचें ताकि पूरक नतीजे दिखाए जा सकें. उदाहरण के लिए, REPLACE को मैन्युअल तौर पर किसी भी परिणाम से मेल नहीं खाता है. मिलती-जुलती क्वेरी के लिए नतीजे दिखाए जा रहे हैं.”

BLEND के मामले में, मूल क्वेरी से मिलते-जुलते नतीजे नहीं मिले. इससे मिलते-जुलते नतीजों के साथ खोज क्वेरी."

लोगों के खोज नतीजों को मैनेज करना

Cloud Search दो तरह के "लोग" नतीजे दिखाता है: जो वह व्यक्ति जिसका नाम किसी व्यक्ति की क्वेरी और कर्मचारी की जानकारी में इस्तेमाल किया गया हो जिसका नाम किसी क्वेरी में इस्तेमाल किया गया हो. बाद वाला नतीजा, Cloud का फ़ंक्शन है खोज की व्यक्ति खोज सुविधा और ऐसी क्वेरी के परिणाम यहां देखे जा सकते हैं यह structuredResults क्वेरी API (एपीआई) रिस्पॉन्स का फ़ील्ड:

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

प्रत्यक्ष रिपोर्ट मिलान

डायरेक्ट रिपोर्ट मैचिंग, Cloud 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"
  }
]

पूर्णांक-आधारित फ़ील्ड के साथ फ़ेसेट नतीजे

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

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

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

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

दस्तावेज़ के आकार या तारीख के हिसाब से पहलू के नतीजे

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

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

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

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

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

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

सुझाव जोड़ें

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

उदाहरण के लिए, नीचे दिया गया कॉल आंशिक वाक्यांश jo.

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

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