क्वेरी को बेहतर तरीके से समझने के लिए स्कीमा बनाना

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

उपयोगकर्ता को दिखाए जाने वाले असल नतीजे, क्वेरी को समझने की आत्मविश्वास पर निर्भर करते हैं. कॉन्फ़िडेंस स्कोर कई बातों पर निर्भर करता है. जैसे, इंडेक्स किए गए दस्तावेज़ों में क्वेरी स्ट्रिंग कहां दिखती हैं. स्ट्रिंग, जैसे कि अभिनेता "टॉम हैंक्स" का नाम, actors नाम के स्कीमा फ़ील्ड में लगातार दिखता है. इससे कॉन्फ़िडेंस लेवल बढ़ता है. अगर किसी पैराग्राफ़ में स्कीमा फ़ील्ड के बजाय एक ही स्ट्रिंग ("टॉम हैंक्स") दिखती है, तो कॉन्फ़िडेंस लेवल कम हो सकता है. अगर क्वेरी को समझने में एआई को पूरा भरोसा होता है, तो उपयोगकर्ता को सिर्फ़ क्वेरी के आधार पर मिले नतीजे दिखाए जाते हैं. अगर क्वेरी को समझने में कम भरोसा है, तो क्वेरी इंटरप्रेटेशन से मिले नतीजों को सामान्य कीवर्ड खोज के नतीजों के साथ मिला दिया जाता है.

रैंकिंग और रिकॉल को बेहतर बनाया जा सके.

क्वेरी के मतलब का उदाहरण

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

क्वेरी इंटरप्रिटेशन की खास जानकारी
पहली इमेज. क्वेरी का मतलब

इस उदाहरण क्वेरी के आधार पर, क्वेरी इंटरप्रिटेशन की सुविधा ये काम करती है:

  • यह स्कीमा को पार्स करता है और यह तय करता है कि डेटा सोर्स में मौजूद टॉप-लेवल के ऑब्जेक्ट को objecttype:movies के तौर पर क्लासिफ़ाई किया गया है. क्वेरी इंटरप्रिटेशन अब यह जानता है कि क्वेरी में "movies" एक ऑब्जेक्ट टाइप है.

  • यह फ़ंक्शन, डेटा सोर्स में मौजूद दस्तावेज़ों को स्कीमा के साथ स्कैन करता है. इससे यह पता चलता है कि "action" स्ट्रिंग कहां मौजूद है. अगर स्ट्रिंग मुख्य रूप से किसी "genre" डेटा सोर्स फ़ील्ड में मौजूद है, तो क्वेरी इंटरप्रिटेशन को भरोसा है कि "action", स्कीमा में तय की गई प्रॉपर्टी "genre" के लिए प्रॉपर्टी वैल्यू है. अगर स्ट्रिंग मुख्य रूप से कॉन्टेंट के पैराग्राफ़ के कॉन्टेक्स्ट में मौजूद है, तो क्वेरी इंटरप्रिटेशन के कॉन्फ़िडेंस लेवल में कमी आती है.

क्वेरी का मतलब यह है:

  actor:tom hanks genre:action objecttype:movies

क्वेरी इंटरप्रिटेशन की सुविधा, Cloud Search के सभी ग्राहकों के लिए अपने-आप चालू हो जाती है. इसके लिए, उन्हें कुछ भी करने की ज़रूरत नहीं होती. हालांकि, क्वेरी को सही तरीके से समझने के लिए, आपको इस दस्तावेज़ में दिए गए निर्देशों के मुताबिक अपने स्कीमा को स्ट्रक्चर करना चाहिए.

क्वेरी को समझने में मदद करने के लिए, अपने स्कीमा को स्ट्रक्चर करें

आपको अपने स्कीमा को इस तरह से स्ट्रक्चर करना चाहिए कि आपको क्वेरी इंटरप्रिटेशन की सुविधा का फ़ायदा मिल सके.

डिसप्ले नेम के मतलब दिखाने की सुविधा चालू करना

Cloud Search, क्वेरी को समझने के लिए स्कीमा में objectDefinitions और propertyDefinitions का इस्तेमाल करता है. इससे, उपयोगकर्ता की क्वेरी को समझा जा सकता है और नतीजों को बेहतर बनाया जा सकता है. इन स्कीमा एलिमेंट का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, आपको प्रॉपर्टी के नामों के लिए displayLabel, ऑब्जेक्ट के नामों के लिए objectDisplayLabel, और ऑपरेटर के लिए operatorName का इस्तेमाल करके, आसानी से समझ में आने वाले डिसप्ले नेम बनाने चाहिए.

नीचे दिए गए स्कीमा में, फ़िल्म ऑब्जेक्ट के लिए डिसप्ले नेम दिखाए गए हैं:

{
  "objectDefinitions": [
    {
      "name": "movie",
        "options": {
          "displayOptions": {
          "objectDisplayLabel": "Films"
        }
        ...
      },
      "propertyDefinitions": [
        {
          "name": "genre",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": {
            "operatorName": "genre"
          }
        },
        "displayOptions": {
          "displayLabel": "Category"
        }
      },
      ...
      ]
    }
  ]
}

पिछले उदाहरण में:

  • फ़िल्म ऑब्जेक्ट की परिभाषा में “Film” objectDisplayLabel मौजूद है.

  • शैली की propertyDefinition में “शैली” operatorName और “कैटगरी” displayLabel शामिल हैं.

इन डिसप्ले नामों की मदद से, Cloud Search क्वेरी को इस तरह समझ सकता है:

  • “ऐक्शन फ़िल्में”, “ऐक्शन टाइप की फ़िल्में”, या “ऐक्शन फ़िल्मों की शैली” को genre:action object:movies के तौर पर समझा जाता है.
  • “ऐक्शन या थ्रिलर शैली वाली फ़िल्में” को इस तरह समझा जाता है objecttype:movies genre:(action OR thriller).
  • “ऐक्शन फ़िल्म” या “ऐक्शन फ़िल्में” को genre:action objecttype:movies के तौर पर माना जाता है.
  • “कॉमेडी कैटगरी की फ़िल्में” को genre:comedy objecttype:movies के तौर पर समझा जाता है.

तारीख, संख्या, और क्रम से लगाने की सुविधा चालू करना

आपको तारीख और संख्या वाली सभी प्रॉपर्टी के लिए, IntegerOperatorOptions में बताई गई lessThanOperatorName और greaterThanOperatorName को तय करना होगा. इन सेटिंग की मदद से, तारीख और संख्यात्मक डेटा की अपने-आप व्याख्या की जा सकती है. इसके अलावा, क्रम से लगाने की सुविधा चालू करने के लिए, तारीख और संख्या वाली प्रॉपर्टी के लिए isSortable विकल्प सेट करें. नीचे दिए गए स्कीमा में, इन विकल्पों को चालू करने का तरीका बताया गया है.

{
  "objectDefinitions": [
    {
      "options": {
        "displayOptions": {
          "objectDisplayLabel": "Films"
        }
      },
      "propertyDefinitions": [
        {
          "name": "runtime",
          "isReturnable": true,
          "isSortable": true,
          "integerPropertyOptions": {
            "orderedRanking": "DESCENDING",
            "minimumValue": {
              "value": 10
            },
            "maximumValue": {
              "value": 500
            },
            "operatorOptions": {
              "operatorName": "runtime",
              "lessThanOperatorName": "runtimelessthan",
              "greaterThanOperatorName": "runtimegreaterthan"
            }
          },
          "displayOptions": {
            "displayLabel": "Length"
          }
        },
        {
          "name": "releasedate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "releasedate",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          }
        }
      ]
    }
  ]
}

पिछले उदाहरण में:

  • संख्या वाली प्रॉपर्टी runtime से, फ़िल्म की अवधि का पता चलता है. runtimelessthan और runtimegreaterthan को इस प्रॉपर्टी के लिए सेट किया गया है.
  • तारीख प्रॉपर्टी releaseDate से पता चलता है कि फ़िल्म थिएटर में कब रिलीज़ हुई थी. इस प्रॉपर्टी के लिए releasedbefore और releasedafter सेट है.

इन सेटिंग की मदद से, Cloud Search क्वेरी को इस तरह से समझ पाता है:

  • मान लें कि साल 2019 है. ऐसे में, “इस साल रिलीज़ हुई फ़िल्में” को objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31 के तौर पर समझा जाएगा.
  • मान लें कि मार्च का तीसरा हफ़्ता है. ऐसे में, “पिछले हफ़्ते रिलीज़ हुई फ़िल्में” को objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16 के तौर पर समझा जाएगा
  • “90 मिनट से कम अवधि वाली फ़िल्में” को objjecttype: movies runtimelessthan:90 के तौर पर समझा जाता है.
  • मान लें कि साल 2019 है. ऐसे में, “इस साल रिलीज़ हुई और 120 मिनट से ज़्यादा अवधि वाली फ़िल्में” को releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120 के तौर पर समझा जाएगा.
  • “रिलीज़ होने की तारीख के हिसाब से फ़िल्में क्रम से लगाएं” क्वेरी के लिए, “objecttype: movies” फ़िल्टर लागू होगा. साथ ही, नतीजे रिलीज़ होने की तारीख के हिसाब से क्रम से लगाए जाएंगे. डिफ़ॉल्ट रूप से, क्रम बढ़ते हुए क्रम में होगा.

ऑपरेटर के लिए, आरक्षित शब्दों के मतलब समझने की सुविधा चालू करना

क्वेरी को बेहतर तरीके से समझने के लिए, type, before, after, objecttype रिज़र्व किए गए बिल्ट-इन ऑपरेटरों का भी इस्तेमाल किया जा सकता है. किसी दस्तावेज़ को इंडेक्स करते समय, ये काम करें:

  1. before और after ऑपरेटर इस्तेमाल करने के लिए, ItemMetadata में मौजूद updateTime फ़ील्ड में वैल्यू डालें. इन सेटिंग की मदद से, Cloud Search क्वेरी को इस तरह से समझ पाता है:

    • “पिछले हफ़्ते की फ़िल्में” क्वेरी के जवाब में, उन सभी फ़िल्मों की सूची दिखेगी जिन्हें पिछले हफ़्ते इंडेक्स में अपडेट किया गया था.
    • “जनवरी 2019 से पहले की फ़िल्में” क्वेरी से, उन सभी फ़िल्मों की सूची दिखेगी जिन्हें जनवरी 2019 से पहले इंडेक्स किया गया था.
  2. टाइप का अपने-आप पता लगाने की सुविधा का इस्तेमाल करने के लिए, ItemMetadata एट्रिब्यूट में mimeType एट्रिब्यूट की वैल्यू डालें. “ऐक्शन वीडियो” क्वेरी से, ऐक्शन मूवी के उन सभी दस्तावेज़ों की सूची दिखेगी जिनका माइम टाइप application/mp4, application/mpeg4, application/x-shockwave-flash, video/, और application/vnd.google-apps.video है.

क्वेरी को समझने से जुड़ी सीमाएं

क्वेरी इंटरप्रेट करने की सुविधा से जुड़ी ये सीमाएं हैं.

  • क्वेरी इंटरप्रिटेशन की सुविधा, सिर्फ़ इन डेटा सोर्स की एएसएल के लिए काम करती है:
    • सभी दस्तावेज़, डोमेन के लिए सार्वजनिक होते हैं. इसका मतलब है कि डोमेन का हर व्यक्ति उन्हें ऐक्सेस कर सकता है.
    • सभी दस्तावेज़, डेटा सोर्स के लिए सार्वजनिक होते हैं. इसका मतलब है कि जिन लोगों के पास डेटा सोर्स की ऐक्सेस कंट्रोल लिस्ट (एसीएल) का ऐक्सेस होता है वे इन दस्तावेज़ों को ऐक्सेस कर सकते हैं.
    • डेटा सोर्स में मौजूद ज़्यादातर दस्तावेज़ों के लिए, एक ही ऐक्सेस कंट्रोल लिस्ट (एसीएल) का इस्तेमाल किया जाता है. इसका मतलब है कि सभी दस्तावेज़, एक ही कंटेनर आइटम से एसीएल इनहेरिट करते हैं. साथ ही, उनमें कोई अतिरिक्त रीडर तय नहीं किया जाता.
  • अगर कई स्कीमा ऑपरेटर की वैल्यू एक जैसी है, तो क्वेरी के लिए ऑपरेटर इंटेंट के तौर पर उस वैल्यू की व्याख्या, क्वेरी इंटरप्रिटेशन सिस्टम से मिले कॉन्फ़िडेंस फ़ैक्टर पर निर्भर करती है. उदाहरण के लिए, मान लें कि आपके पास priority और severity प्रॉपर्टी हैं. इनमें ऑपरेटर के नाम एक जैसे हैं और स्कीमा में इन्हें तय किया गया है. मान लें कि दोनों ऑपरेटर की वैल्यू 0, 1, 2 या 3 हो सकती है. इस उदाहरण में, क्वेरी में मौजूद "0" का मतलब, ऑपरेटर वैल्यू priority या severity में से किसी एक के लिए हो सकता है. ये वैल्यू अस्पष्ट हैं और कॉन्फ़िडेंस लेवल कम है.
  • डिफ़ॉल्ट रूप से, Cloud Search की क्वेरी इंटरप्रिटेशन सुविधा, क्वेरी को समझने के दौरान फ़ील्ड की वैल्यू के केस को छोटा कर देती है. हालांकि, exactMatchWithOperator विकल्पों के साथ तय किए गए टेक्स्ट ऑपरेटर के लिए ऐसा नहीं होता.
  • क्वेरी में source ऑपरेटर का इस्तेमाल नहीं किया जा सकता.
  • ऑपरेटर और फ़्री टेक्स्ट वाले शब्दों को मिलाकर बनाई गई क्वेरी को नहीं समझा जाता. उदाहरण के लिए, "p0 priority cases severity:s0" क्वेरी का इस्तेमाल नहीं किया जा सकता, क्योंकि "p0 priority cases" एक फ़्री टेक्स्ट-टर्म है, जबकि "severity:s0" ऑपरेटर पर आधारित टर्म है.
  • क्वेरी इंटरप्रिटेशन की रणनीति में, इंटरप्रेट किए गए नतीजों को हमेशा सामान्य (इंटरप्रेट नहीं किए गए, काम के हिसाब से रैंक किए गए) नतीजों के साथ मिलाया जाता है. यह नतीजों को पूरे पेज पर नहीं बदलता.