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

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

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

क्वेरी की व्याख्या का उदाहरण

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

क्वेरी की व्याख्या की खास जानकारी
पहली इमेज. क्वेरी की व्याख्या

क्वेरी के इस उदाहरण की मदद से, क्वेरी की व्याख्या ये काम करती है:

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

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

ऊपर दिए गए उदाहरण में:

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