सबसे अच्छी क्वेरी की जानकारी देने के लिए स्कीमा बनाएं

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

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

क्वेरी के बारे में जानकारी का उदाहरण

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

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

उदाहरण के तौर पर दी गई इस क्वेरी में, क्वेरी व्याख्या से ये काम किए जाते हैं:

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

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

इससे मिलने वाली क्वेरी का मतलब यह है:

  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"
        }
      },
      ...
      ]
    }
  ]
}

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

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

  • शैली प्रॉपर्टी परिभाषा में एक “शैली” 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 के MIME टाइप वाले सभी ऐक्शन फ़िल्म के दस्तावेज़ दिखेंगे.

क्वेरी को समझने की सीमाएं

क्वेरी इंटरप्रिटेशन सुविधा की सीमाएं नीचे दी गई हैं.

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