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

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

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

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

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

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

इस उदाहरण के लिए, क्वेरी का मतलब:

  • यह कुकी, स्कीमा से यह तय करती है कि टॉप-लेवल ऑब्जेक्ट objecttype:movies हैं.
  • यह कुकी, दस्तावेज़ों को स्कैन करती है. इससे यह पता चलता है कि "कार्रवाई" कहां होती है. अगर यह मुख्य रूप से genre फ़ील्ड में दिखता है, तो इस बात की संभावना बढ़ जाती है कि यह उस फ़ील्ड के लिए प्रॉपर्टी वैल्यू है.

इसकी व्याख्या यह है: actor:"tom hanks" genre:action objecttype:movies

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

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

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

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

क्वेरी समझने की सुविधा, क्वेरी को समझने के लिए objectDefinitions और propertyDefinitions का इस्तेमाल करती है. प्रॉपर्टी के लिए displayLabel, ऑब्जेक्ट के लिए objectDisplayLabel, और ऑपरेटर के लिए operatorName का इस्तेमाल करके, आसानी से समझ में आने वाले डिसप्ले नेम बनाएं.

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

{
  "objectDefinitions": [{
    "name": "movie",
    "options": {
      "displayOptions": { "objectDisplayLabel": "Films" }
    },
    "propertyDefinitions": [{
      "name": "genre",
      "isReturnable": true,
      "textPropertyOptions": {
        "operatorOptions": { "operatorName": "genre" }
      },
      "displayOptions": { "displayLabel": "Category" }
    }]
  }]
}

इन डिसप्ले नेम से इस तरह की व्याख्याएं की जा सकती हैं:

  • "ऐक्शन फ़िल्में" -> genre:action object:movies
  • "ऐक्शन या थ्रिलर शैली वाली फ़िल्में" -> objecttype:movies genre:(action OR thriller)
  • "कॉमेडी कैटगरी की फ़िल्में" -> genre:comedy objecttype:movies

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

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

इस उदाहरण में, इन विकल्पों को चालू किया गया है:

{
  "objectDefinitions": [{
    "propertyDefinitions": [
      {
        "name": "runtime",
        "isSortable": true,
        "integerPropertyOptions": {
          "operatorOptions": {
            "operatorName": "runtime",
            "lessThanOperatorName": "runtimelessthan",
            "greaterThanOperatorName": "runtimegreaterthan"
          }
        }
      },
      {
        "name": "releasedate",
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "releasedate",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

इन सेटिंग से, इस तरह की व्याख्याएं की जा सकती हैं:

  • "इस साल रिलीज़ हुई फ़िल्में" -> objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • "90 मिनट से कम अवधि वाली फ़िल्में" -> objecttype:movies runtimelessthan:90

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

type, before, after, और objecttype जैसे बिल्ट-इन ऑपरेटर इस्तेमाल करें:

  1. before और after का इस्तेमाल करने के लिए, ItemMetadata में updateTime भरें.
  2. अपने-आप पता लगाने की सुविधा के लिए, ItemMetadata में mimeType की जानकारी भरें. उदाहरण के लिए, "ऐक्शन वीडियो" में, वीडियो एमआईएमई टाइप वाले दस्तावेज़ों की सूची होती है.

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

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