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

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") को नहीं समझा जाता.
  • नतीजों को हमेशा, काम के हिसाब से रैंक किए गए नतीजों के साथ मिलाया जाता है.