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

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