स्कीमा बनाना और रजिस्टर करना

Google Cloud Search स्कीमा एक JSON स्ट्रक्चर है, जो आपके डेटा को इंडेक्स करने और क्वेरी करने में इस्तेमाल होने वाले ऑब्जेक्ट, प्रॉपर्टी, और विकल्प. आपका कॉन्टेंट कनेक्टर, आपके रिपॉज़िटरी (डेटा स्टोर करने की जगह) के डेटा को पढ़ता है. साथ ही, रजिस्टर किए गए स्कीमा, स्ट्रक्चर, और डेटा को इंडेक्स करता है.

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

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

स्कीमा बनाएं

आपका Cloud Search स्कीमा बनाने के लिए, नीचे दिए गए चरणों का इस्तेमाल किया जाता है:

  1. उपयोगकर्ता के अनुमानित व्यवहार की पहचान करना
  2. डेटा सोर्स शुरू करना
  3. स्कीमा बनाना
  4. सैंपल स्कीमा पूरा करना
  5. अपना स्कीमा रजिस्टर करना
  6. अपना डेटा इंडेक्स करना
  7. अपने स्कीमा की जांच करना
  8. अपने स्कीमा को ट्यून करना

उपयोगकर्ता के अनुमानित व्यवहार की पहचान करना

अपने उपयोगकर्ताओं की क्वेरी के टाइप का अनुमान लगाने से, रणनीति को बेहतर बनाने में मदद मिलती है जिनका इस्तेमाल स्कीमा बनाने के लिए किया जाता है.

उदाहरण के लिए, किसी फ़िल्म के डेटाबेस के लिए क्वेरी जारी करते समय, उपयोगकर्ता पूछ रहा हो, जैसे कि "मुझे अमिताभ बच्चन की सभी फ़िल्में दिखाओ." इसलिए, आपके स्कीमा में "सभी मूवी एक खास अभिनेता बन सकता है."

उपयोगकर्ता के व्यवहार के पैटर्न के हिसाब से अपना स्कीमा तय करने के लिए, ये काम करना:

  1. अलग-अलग उपयोगकर्ताओं की पसंद की क्वेरी के अलग-अलग सेट का आकलन करें.
  2. क्वेरी में इस्तेमाल किए जा सकने वाले ऑब्जेक्ट की पहचान करें. ऑब्जेक्ट लॉजिकल हैं जैसे कि फ़िल्मों के डेटाबेस में मौजूद कोई फ़िल्म.
  3. उन प्रॉपर्टी और मानों की पहचान करें जो ऑब्जेक्ट बनाते हैं और हो सकता है क्वेरी में इस्तेमाल किया गया. प्रॉपर्टी, ऑब्जेक्ट के इंडेक्स किए जा सकने वाले एट्रिब्यूट हैं; इनमें प्रिमिटिव वैल्यू या अन्य चीज़ें शामिल हो सकती हैं. उदाहरण के लिए, किसी मूवी ऑब्जेक्ट में प्रॉपर्टी हो सकती हैं, जैसे कि मूवी का शीर्षक और रिलीज़ की तारीख को शुरुआती वैल्यू के तौर पर डालें. मूवी ऑब्जेक्ट में अन्य चीज़ें भी हो सकती हैं वे चीज़ें, जैसे कलाकार के सदस्य, जिनकी अपनी प्रॉपर्टी होती हैं, जैसे कि नाम या भूमिका भी असाइन करेंगे.
  4. प्रॉपर्टी के लिए मान्य वैल्यू के उदाहरणों की पहचान करें. वैल्यू असल डेटा होती है प्रॉपर्टी के लिए इंडेक्स किया जाता है. उदाहरण के लिए, आपके डेटाबेस में किसी फ़िल्म का टाइटल "रेडर्स ऑफ़ द लॉस्ट आर्क."
  5. अपने उपयोगकर्ताओं के हिसाब से, क्रम से लगाने और रैंकिंग देने के विकल्प तय करें. उदाहरण के लिए, मूवी की क्वेरी करते समय, हो सकता है कि उपयोगकर्ता कालानुक्रम से और से जुड़ी है. इन्हें टाइटल के हिसाब से, अंग्रेज़ी के अक्षरों के मुताबिक क्रम में लगाने की ज़रूरत नहीं है.
  6. (ज़रूरी नहीं) देखें कि आपकी कोई प्रॉपर्टी ज़्यादा सटीक है या नहीं किस संदर्भ में सर्च की जा सकती है, जैसे कि उपयोगकर्ताओं की नौकरी की भूमिका या डिपार्टमेंट के लिए सुझाव दिया जाता है, ताकि वेब पर मौजूद आपके संदर्भ. उदाहरण के लिए, फ़िल्मों का डेटाबेस खोजने वाले लोगों के लिए, किसी ख़ास शैली की फ़िल्मों में दिलचस्पी रखने वाले लोग. उपयोगकर्ताओं को वे अपनी सर्च क्वेरी का जवाब देना चाहते हैं. प्रोफ़ाइल. इसके बाद, जब कोई उपयोगकर्ता मूवी की क्वेरी टाइप करना शुरू करता है, केवल उनकी पसंदीदा शैली की फ़िल्में, जैसे "ऐक्शन फ़िल्में" के रूप में सुझाए गए हैं अपने-आप पूरा होने वाले सुझावों का हिस्सा है.
  7. इन ऑब्जेक्ट, प्रॉपर्टी और उदाहरण मानों की एक सूची बनाएं, जिन्हें खोजों में इस्तेमाल किया गया. (इस सूची का इस्तेमाल कैसे किया गया है, यह जानने के लिए, ऑपरेटर विकल्प तय करें सेक्शन देखें.)

डेटा सोर्स शुरू करना

डेटा सोर्स, डेटा स्टोर करने की ऐसी जगह का डेटा दिखाता है जिसे इंडेक्स किया गया है और Google Cloud में सेव हो जाता है. डेटा सोर्स शुरू करने के निर्देश पाने के लिए, रेफ़र करें तीसरे पक्ष के डेटा सोर्स मैनेज करें.

उपयोगकर्ता के खोज के नतीजे, डेटा सोर्स से दिखाए जाते हैं. जब कोई उपयोगकर्ता क्लिक करता है खोज परिणाम दिखाई देता है, तो Cloud Search, इंडेक्स करने के अनुरोध में दिया गया यूआरएल.

अपने ऑब्जेक्ट तय करें

स्कीमा में डेटा की मौलिक इकाई object होती है, जिसे "स्कीमा भी कहा जाता है ऑब्जेक्ट", जो डेटा का एक लॉजिकल स्ट्रक्चर होता है. फ़िल्मों के डेटाबेस में, एक डेटा की लॉजिकल स्ट्रक्चर "मूवी" है. दूसरी ऑब्जेक्ट "व्यक्ति" हो सकता है से फ़िल्म के कलाकारों और क्रू के बारे में बताता हो.

स्कीमा में मौजूद हर ऑब्जेक्ट में, ऐसी प्रॉपर्टी या एट्रिब्यूट की एक सीरीज़ होती है जो ऑब्जेक्ट का ब्यौरा दें, जैसे कि मूवी का टाइटल और कुल समय या नाम और किसी व्यक्ति की जन्म की तारीख. किसी ऑब्जेक्ट की प्रॉपर्टी में प्रिमिटिव शामिल हो सकता है वैल्यू या अन्य ऑब्जेक्ट शामिल हैं.

पहली इमेज में मूवी और किसी व्यक्ति से जुड़ी चीज़ें और उससे जुड़ी चीज़ें दिखाई गई हैं प्रॉपर्टी.

अलग-अलग इकाइयों के बीच स्कीमा कनेक्शन की ड्रॉइंग
पहली इमेज. दो ऑब्जेक्ट दिखाने वाला सैंपल स्कीमा और एक सब-ऑब्जेक्ट भी है.

Cloud Search स्कीमा यह टैग में परिभाषित ऑब्जेक्ट डेफ़िनिशन स्टेटमेंट की एक सूची है objectDefinitions टैग के साथ किया जा सकता है. यह स्कीमा स्निपेट दिखाता है मूवी और व्यक्ति स्कीमा ऑब्जेक्ट के लिए objectDefinitions स्टेटमेंट.

{
  "objectDefinitions": [
    {
      "name": "movie",
      ...
    },
    {
      "name": "person",
      ...
    }
  ]
}

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

ऑब्जेक्ट की प्रॉपर्टी तय करें

जैसा कि ObjectDefinition, ऑब्जेक्ट के नाम के बाद options, और सूची में propertyDefinitions. कॉन्टेंट बनाने options यह कर सकते हैं इसमें ये शामिल हैं: freshnessOptions और displayOptions. कॉन्टेंट बनाने freshnessOptions का इस्तेमाल किसी आइटम की ताज़गी के हिसाब से खोज की रैंकिंग में बदलाव करने के लिए किया जाता है. कॉन्टेंट बनाने displayOptions का इस्तेमाल यह तय करने के लिए किया जाता है कि किसी ऑब्जेक्ट के लिए खोज नतीजे.

कॉन्टेंट बनाने propertyDefinitions सेक्शन में किसी ऑब्जेक्ट की प्रॉपर्टी बताई जाती है, जैसे कि मूवी का नाम और रिलीज़ की तारीख जैसी होती है.

यह स्निपेट, दो प्रॉपर्टी के साथ movie ऑब्जेक्ट दिखाता है: movieTitle और releaseDate.

{
  "objectDefinitions": [
    {
      "name": "movie",
      "propertyDefinitions": [
        {
          "name": "movieTitle",
          "isReturnable": true,
          "isWildcardSearchable": true,
          "textPropertyOptions": {
            "retrievalImportance": { "importance": "HIGHEST" },
            "operatorOptions": {
              "operatorName": "title"
            }
          },
          "displayOptions": {
            "displayLabel": "Title"
          }
        },
        {
          "name": "releaseDate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "released",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          },
          "displayOptions": {
            "displayLabel": "Release date"
          }
      ...
      ]
    }
  ]
}

कॉन्टेंट बनाने PropertyDefinition इसमें ये आइटम शामिल होते हैं:

  • name स्ट्रिंग.
  • टाइप-एग्नोस्टिक विकल्पों की सूची, जैसे कि पिछले विकल्प में isReturnable स्निपेट.
  • टाइप और उससे जुड़े खास टाइप के विकल्प, जैसे कि पिछले स्निपेट में textPropertyOptions और retrievalImportance.
  • operatorOptions में बताया गया हो कि प्रॉपर्टी को खोज ऑपरेटर का इस्तेमाल करें.
  • एक या एक से ज़्यादा displayOptions, जैसे कि पिछले स्निपेट में displayLabel.

किसी ऑब्जेक्ट में प्रॉपर्टी का name यूनीक होना चाहिए, लेकिन समान नाम का इस्तेमाल दूसरे ऑब्जेक्ट और सब-ऑब्जेक्ट में भी किया जा सकता है. इमेज 1 में, फ़िल्म के टाइटल और रिलीज़ होने की तारीख को दो बार बताया गया है: movie ऑब्जेक्ट में एक बार और फिर सेfilmography person ऑब्जेक्ट. यह स्कीमा, movieTitle फ़ील्ड का फिर से इस्तेमाल करता है ताकि स्कीमा दो तरह के खोज व्यवहार के साथ काम कर सके:

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

इसी तरह, स्कीमा releaseDate फ़ील्ड का फिर से इस्तेमाल करता है, क्योंकि दोनों फ़ील्ड में समान जानकारी होती है दो movieTitle फ़ील्ड का मतलब.

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

टाइप-एग्नोस्टिक विकल्प जोड़ें

कॉन्टेंट बनाने PropertyDefinition खोज करने की सुविधा के ऐसे सामान्य विकल्पों की सूची बनाता है जो सभी प्रॉपर्टी के लिए आम हैं डेटा टाइप पर ध्यान दिए बिना.

  • isReturnable - यह बताता है कि प्रॉपर्टी क्वेरी API के ज़रिए खोज नतीजों में दिखाई जाती है. उदाहरण के तौर पर दी गई सभी फ़िल्म प्रॉपर्टी दिखाई जा सकती हैं. नहीं दिखाई जा सकने वाली प्रॉपर्टी का इस्तेमाल खोज के लिए किया जा सकता है नतीजे, उपयोगकर्ता को वापस नहीं दिए जाते.
  • isRepeatable - इससे पता चलता है कि प्रॉपर्टी में एक से ज़्यादा वैल्यू की अनुमति है या नहीं. इसके लिए उदाहरण के लिए, किसी फ़िल्म के रिलीज़ होने की सिर्फ़ एक तारीख होती है, लेकिन एक से ज़्यादा अभिनेता हो सकते हैं.
  • isSortable - इससे यह पता चलता है कि प्रॉपर्टी का इस्तेमाल, क्रम में लगाने के लिए किया जा सकता है. यह बार-बार इस्तेमाल की जा सकने वाली प्रॉपर्टी के लिए, सही नहीं हो सकता. उदाहरण के लिए, फ़िल्म के परिणाम रिलीज़ की तारीख या ऑडियंस रेटिंग के हिसाब से क्रम में लगाया जा सकता है.
  • isFacetable - यह बताता है कि प्रॉपर्टी का इस्तेमाल फ़ेस जनरेट करने के लिए किया जा सकता है. खोज परिणामों को बेहतर बनाने के लिए फ़ैसेट का इस्तेमाल किया जाता है, जिसमें उपयोगकर्ता को नतीजों को हाइलाइट करती है और फिर उन्हें और बेहतर बनाने के लिए मानदंड या पहलू जोड़ती है नतीजे. यह विकल्प उन प्रॉपर्टी के लिए सही नहीं हो सकता जिनका टाइप ऑब्जेक्ट और इस विकल्प को सेट करने के लिए, isReturnable सही होना चाहिए. आख़िर में, यह विकल्प सिर्फ़ enum, बूलियन और टेक्स्ट प्रॉपर्टी के लिए काम करता है. उदाहरण के लिए, हमारे नमूना स्कीमा में, हम genre, actorName, userRating, और mpaaRating फ़ेसटेबल को इनकी अनुमति देने के लिए का इस्तेमाल खोज नतीजों को इंटरैक्टिव बनाने के लिए किया जाना चाहिए.
  • isWildcardSearchable से पता चलता है कि उपयोगकर्ता इन चीज़ों के लिए वाइल्डकार्ड खोज कर सकते हैं इस प्रॉपर्टी. यह विकल्प सिर्फ़ टेक्स्ट प्रॉपर्टी पर उपलब्ध है. वाइल्डकार्ड कैसे खोज, टेक्स्ट फ़ील्ड पर काम करती है, exactMatchWithOperator फ़ील्ड के साथ काम करता है. अगर exactMatchWithOperator को true पर सेट किया जाता है, तो टेक्स्ट मान को एक ऐटॉमिक मान के रूप में टोकन किया जाता है और वाइल्डकार्ड खोज को प्रदर्शन किया. उदाहरण के लिए, अगर टेक्स्ट वैल्यू science-fiction है, वाइल्डकार्ड क्वेरी science-* इससे मेल खाती है. अगर exactMatchWithOperator को इस पर सेट किया गया false, टेक्स्ट वैल्यू को टोकन के तौर पर शामिल किया जाता है और इसके लिए वाइल्डकार्ड खोज की जाती है हर टोकन के साथ किया जा सकता है. उदाहरण के लिए, अगर टेक्स्ट वैल्यू "साइंस फ़िक्शन" है, तो वाइल्डकार्ड क्वेरी sci* या fi* आइटम से मेल खाती है, लेकिन science-* इससे मेल नहीं खाती.

खोज के ये सामान्य फ़ंक्शन, सभी बूलियन वैल्यू हैं; वे सभी की डिफ़ॉल्ट वैल्यू false है और यह true पर सेट होनी चाहिए इन सुझावों का इस्तेमाल किया जा सकता है.

इस टेबल में वे बूलियन पैरामीटर दिखाए गए हैं जिन्हें true पर सेट किया गया है movie ऑब्जेक्ट की सभी प्रॉपर्टी के लिए:

प्रॉपर्टी isReturnable isRepeatable isSortable isFacetable isWildcardSearchable
movieTitle सही सही
releaseDate सही सही
genre सही सही सही
duration सही
actorName सही सही सही सही
userRating सही सही
mpaaRating सही सही

genre और actorName, दोनों के isRepeatable को true पर सेट किया गया है क्योंकि कोई फ़िल्म एक से ज़्यादा शैलियों में हो सकती है और आम तौर पर एक से ज़्यादा अभिनेता हैं. अगर किसी प्रॉपर्टी को दोहराया जा सकता है, तो उसे क्रम से नहीं लगाया जा सकता या किसी दोहराए जा सकने वाले सब-ऑब्जेक्ट में शामिल हो.

टाइप तय करें

कॉन्टेंट बनाने PropertyDefinition रेफ़रंस सेक्शन में कई xxPropertyOptions लिस्ट होती हैं, जहां xx एक खास टाइप है, जैसे कि boolean. प्रॉपर्टी का डेटा टाइप सेट करने के लिए, उचित डेटा-प्रकार का ऑब्जेक्ट है. किसी प्रॉपर्टी के लिए डेटा-टाइप ऑब्जेक्ट तय करना इससे उस प्रॉपर्टी का डेटा टाइप तय होता है. उदाहरण के लिए, movieTitle प्रॉपर्टी के लिए textPropertyOptions से पता चलता है कि मूवी शीर्षक टाइप टेक्स्ट है. नीचे दिया गया स्निपेट movieTitle प्रॉपर्टी दिखाता है textPropertyOptions डेटा टाइप सेट करके.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    ...
  },
  ...
},

किसी प्रॉपर्टी में सिर्फ़ एक ही तरह का डेटा टाइप हो सकता है. उदाहरण के लिए, हमारी फ़िल्म स्कीमा, releaseDate सिर्फ़ एक तारीख हो सकती है (उदाहरण, 2016-01-13) या स्ट्रिंग (उदाहरण के लिए, January 13, 2016), दोनों नहीं.

यहां डेटा-टाइप ऑब्जेक्ट के बारे में बताया गया है, जिनका इस्तेमाल प्रॉपर्टी का नमूना:

प्रॉपर्टी डेटा-टाइप ऑब्जेक्ट
movieTitle textPropertyOptions
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions
mpaaRating textPropertyOptions

आपने प्रॉपर्टी के लिए कौनसा डेटा टाइप चुना है, यह आपकी उम्मीद के मुताबिक इस्तेमाल के उदाहरणों पर निर्भर करता है. फ़िल्म स्कीमा के तौर पर कल्पना करते समय, उपयोगकर्ताओं से नतीजों को समय के हिसाब से क्रम में लगाना चाहते हैं, तो releaseDate एक तारीख ऑब्जेक्ट है. उदाहरण के लिए, अगर दिसंबर की रिलीज़ की तुलना करने की ज़रूरत थी, तो इस्तेमाल का एक उदाहरण था साल दर साल रिलीज़ हो रहे हैं, तो स्ट्रिंग फ़ॉर्मैट काम आ सकता है.

टाइप के हिसाब से विकल्प कॉन्फ़िगर करें

कॉन्टेंट बनाने PropertyDefinition संदर्भ सेक्शन में हर तरह के विकल्प के लिए लिंक होते हैं. ज़्यादातर टाइप के लिए विकल्प देना ज़रूरी नहीं है. हालांकि, possibleValues की सूची में enumPropertyOptions. इसके अलावा, orderedRanking विकल्प की मदद से ये काम किए जा सकते हैं एक-दूसरे की तुलना में रैंक की गई वैल्यू. कॉन्टेंट बनाने इस स्निपेट में, textPropertyOptions के साथ movieTitle प्रॉपर्टी दिखाई गई है डेटा टाइप सेट करने के साथ-साथ retrievalImportance टाइप के हिसाब से भी चुना जा सकता है.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    ...
  },
  ...
}

यहां सैंपल स्कीमा में इस्तेमाल किए जाने वाले, टाइप के हिसाब से कुछ और विकल्प दिए गए हैं:

प्रॉपर्टी टाइप टाइप के हिसाब से विकल्प
movieTitle textPropertyOptions retrievalImportance
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions orderedRanking, maximumValue
mpaaRating textPropertyOptions

ऑपरेटर के विकल्प तय करें

टाइप के हिसाब से तय किए गए विकल्पों के अलावा, हर टाइप के लिए वैकल्पिक operatorOptions यहां दिए गए विकल्पों में बताया गया है कि प्रॉपर्टी खोज ऑपरेटर का इस्तेमाल करें. नीचे दिया गया स्निपेट, movieTitle प्रॉपर्टी को textPropertyOptions, डेटा टाइप सेट करके और retrievalImportance और operatorOptions टाइप के हिसाब से विकल्प.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
      "operatorName": "title"
    }
  },
  ...
}

हर operatorOptions का एक operatorName होता है, जैसे किtitle movieTitle. ऑपरेटर का नाम, प्रॉपर्टी के लिए खोज ऑपरेटर होता है. ऐप्लिकेशन खोज ऑपरेटर वह वास्तविक पैरामीटर है, जिसका आप उपयोगकर्ताओं से उपयोग करने की उम्मीद करते हैं बेहद कम समय लगता है. उदाहरण के लिए, टाइटल के हिसाब से फ़िल्में खोजने के लिए, उपयोगकर्ता title:movieName टाइप करेगा, जहां movieName मूवी का नाम है.

यह ज़रूरी नहीं है कि ऑपरेटर के नाम और प्रॉपर्टी का नाम एक ही हो. इसके बजाय, आपको ऑपरेटर नामों का उपयोग करना चाहिए जो सबसे ज़्यादा इस्तेमाल किए जाने वाले शब्दों को दिखाते हैं आपके संगठन के उपयोगकर्ता करते हैं. उदाहरण के लिए, यदि आपके उपयोगकर्ता "नाम" "title" के बजाय तो ऑपरेटर का नाम "name" पर सेट किया गया है.

कई प्रॉपर्टी के लिए, एक ही ऑपरेटर नाम का इस्तेमाल किया जा सकता है, बशर्ते सभी प्रॉपर्टी के नतीजे एक जैसे होते हैं. के दौरान शेयर किए गए ऑपरेटर नाम का इस्तेमाल करते समय कोई क्वेरी, तो उस ऑपरेटर नाम का उपयोग करने वाली सभी प्रॉपर्टी को पुनः प्राप्त किया जाता है. उदाहरण के लिए, मान लें कि मूवी ऑब्जेक्ट में plotSummary और plotSynopsis थे प्रॉपर्टी हैं और हर प्रॉपर्टी में plot का operatorName था. जैसे जब तक ये दोनों प्रॉपर्टी टेक्स्ट (textPropertyOptions) हैं, एकल plot सर्च ऑपरेटर का इस्तेमाल करने वाली क्वेरी, उन दोनों को वापस लाती है.

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

आखिर में, textOperatorOptions में एक exactMatchWithOperator फ़ील्ड होता है operatorOptions. अगर आपको exactMatchWithOperator को true पर सेट करें, तो क्वेरी स्ट्रिंग में सिर्फ़ टेक्स्ट में ही नहीं, बल्कि प्रॉपर्टी की पूरी वैल्यू से मैच करना चाहिए. ऑपरेटर खोजों में टेक्स्ट मान को एक ऐटॉमिक मान माना जाता है और फ़िल्टर भी जोड़े जा सकते हैं.

उदाहरण के लिए, शैली प्रॉपर्टी वाली किताब या फ़िल्म के ऑब्जेक्ट को इंडेक्स करें. शैलियों में "साइंस-फ़िक्शन", "विज्ञान", और "फ़िक्शन" शामिल हो सकते हैं. के साथ exactMatchWithOperator को false पर सेट करें या छोड़ा गया, शैली खोज रहे हैं या "विज्ञान" को चुनकर या "फ़िक्शन" फ़ेसट को भी इस्तेमाल किया जा सकता है "विज्ञान कथा" के लिए परिणाम दिखाएं क्योंकि टेक्स्ट को टोकन के तौर पर शामिल किया जाता है और "विज्ञान" और "फ़िक्शन" टोकन "विज्ञान कथा" में मौजूद होते हैं. जब exactMatchWithOperator, true हो, टेक्स्ट को एक टोकन के तौर पर माना जाता है, इसलिए "विज्ञान" और न ही "फ़िक्शन" "विज्ञान कथा" से मेल खाता हो.

(ज़रूरी नहीं) displayOptions सेक्शन जोड़ें

किसी भी कॉलम के आखिर में एक वैकल्पिक displayOptions सेक्शन होता है propertyDefinition सेक्शन. इस सेक्शन में एक displayLabel स्ट्रिंग है. displayLabel एक सुझाया गया और उपयोगकर्ता के लिए आसान टेक्स्ट लेबल है प्रॉपर्टी के लिए. अगर प्रॉपर्टी को ObjectDisplayOptions, यह लेबल प्रॉपर्टी के सामने दिखता है. अगर प्रॉपर्टी कॉन्फ़िगर हो जाती है प्रदर्शन के लिए और displayLabel के बारे में नहीं बताया गया है, सिर्फ़ प्रॉपर्टी का मान है दिखाया जाएगा.

नीचे दिया गया स्निपेट, displayLabel के साथ movieTitle प्रॉपर्टी दिखाता है 'टाइटल' पर सेट करें.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
       "operatorName": "title"
    }
},
  "displayOptions": {
    "displayLabel": "Title"
  }
},

movie की सभी प्रॉपर्टी के लिए, displayLabel की वैल्यू नीचे दी गई हैं ऑब्जेक्ट की जानकारी देखें:

प्रॉपर्टी displayLabel
movieTitle Title
releaseDate Release date
genre Genre
duration Run length
actorName Actor
userRating Audience score
mpaaRating MPAA rating

(ज़रूरी नहीं) suggestionFilteringOperators[] सेक्शन जोड़ें

एक वैकल्पिक ऑडियंस भी है suggestionFilteringOperators[] किसी propertyDefinition सेक्शन के आखिर में रखना चाहिए. इस सेक्शन का इस्तेमाल अपने आप पूरा होने वाले सुझावों को फ़िल्टर करने के लिए इस्तेमाल की जाने वाली प्रॉपर्टी तय करते हैं. उदाहरण के लिए, आपके उपयोगकर्ता के आधार पर सुझावों को फ़िल्टर करने के लिए genre का ऑपरेटर तय कर सकता है पसंदीदा शैली की फ़िल्म चुनें. इसके बाद, जब उपयोगकर्ता अपनी खोज क्वेरी टाइप करता है, तो सिर्फ़ अपनी पसंदीदा शैली से मेल खाने वाली फ़िल्मों को ऑटोकंप्लीट की सुविधा के हिस्से के तौर पर दिखाया जाता है सुझाव.

अपना स्कीमा रजिस्टर करें

Cloud Search क्वेरी से स्ट्रक्चर्ड डेटा वापस पाने के लिए, आपको अपनी सदस्यता को रजिस्टर करना होगा आपका स्कीमा, Cloud Search स्कीमा सेवा के लिए इस्तेमाल किया जाता है. स्कीमा को रजिस्टर करने के लिए ज़रूरी है आपको इस अवधि में मिला डेटा सोर्स आईडी डेटा सोर्स शुरू करने का तरीका.

डेटा सोर्स आईडी का इस्तेमाल करके, UpdateSchema आपके स्कीमा को रजिस्टर करने का अनुरोध करें.

जैसा कि यहां बताया गया है UpdateSchema रेफ़रंस पेज, अपना स्कीमा रजिस्टर करने के लिए, नीचे दिया गया एचटीटीपी अनुरोध करें:

PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema

आपके अनुरोध में ये चीज़ें शामिल होनी चाहिए:

{
  "validateOnly": // true or false,
  "schema": {
    // ... Your complete schema object ...
  }
}

बिना स्कीमा की वैधता की जांच करने के लिए, validateOnly विकल्प का इस्तेमाल करें उसे रजिस्टर कर रहा है.

अपना डेटा इंडेक्स करना

स्कीमा रजिस्टर हो जाने के बाद, इसका इस्तेमाल करके डेटा सोर्स को पॉप्युलेट करें इंडेक्स कॉल. आम तौर पर, इंडेक्स करने की प्रोसेस आपके कॉन्टेंट कनेक्टर में की जाती है.

फ़िल्म स्कीमा का इस्तेमाल करने पर, किसी फ़िल्म के लिए REST API को इंडेक्स करने का अनुरोध इस तरह दिखें:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "acl": {
    "readers": [
      {
        "gsuitePrincipal": {
          "gsuiteDomain": true
        }
      }
    ]
  },
  "metadata": {
    "title": "Titanic",
    "sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [
        {
          "name": "movieTitle",
          "textValues": {
            "values": [
              "Titanic"
            ]
          }
        },
        {
          "name": "releaseDate",
          "dateValues": {
            "values": [
              {
                "year": 1997,
                "month": 12,
                "day": 19
              }
            ]
          }
        },
        {
          "name": "actorName",
          "textValues": {
            "values": [
              "Leonardo DiCaprio",
              "Kate Winslet",
              "Billy Zane"
            ]
          }
        },
        {
          "name": "genre",
          "enumValues": {
            "values": [
              "Drama",
              "Action"
            ]
          }
        },
        {
          "name": "userRating",
          "integerValues": {
            "values": [
              8
            ]
          }
        },
        {
          "name": "mpaaRating",
          "textValues": {
            "values": [
              "PG-13"
            ]
          }
        },
        {
          "name": "duration",
          "textValues": {
            "values": [
              "3 h 14 min"
            ]
          }
        }
      ]
    }
  },
  "content": {
    "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
    "contentFormat": "TEXT"
  },
  "version": "01",
  "itemType": "CONTENT_ITEM"
}

ध्यान दें कि objectType फ़ील्ड में movie की वैल्यू, ऑब्जेक्ट से कैसे मैच करती है स्कीमा में परिभाषा का नाम. इन दो वैल्यू का मिलान करने से, Cloud Search को इंडेक्स करते समय किस स्कीमा ऑब्जेक्ट का इस्तेमाल करना चाहिए.

यह भी ध्यान रखें कि स्कीमा प्रॉपर्टी releaseDate को इंडेक्स करने का तरीका कैसे इस्तेमाल होता है year, month, और day की सब-प्रॉपर्टी हैं. इन्हें यह इनहेरिट किया जाता है, क्योंकि यह को date डेटा टाइप के तौर पर तय किया जाता है. इसे datePropertyOptions का इस्तेमाल करके तय किया जाता है. हालांकि, स्कीमा में year, month, और day के बारे में नहीं बताया गया है. इसलिए, आप उनमें से किसी एक प्रॉपर्टी पर क्वेरी नहीं कर सकता (उदाहरण के लिए, year) अलग-अलग हैं.

साथ ही, यह भी ध्यान रखें कि सूची का इस्तेमाल करके, दोहराए जा सकने वाले प्रॉपर्टी actorName को कैसे इंडेक्स किया जाता है वैल्यू होती हैं.

इंडेक्स करने में आ सकने वाली समस्याओं का पता लगाना

स्कीमा और इंडेक्स करने से जुड़ी दो आम समस्याएं ये हैं:

  • आपके इंडेक्स करने के अनुरोध में ऐसा स्कीमा ऑब्जेक्ट या प्रॉपर्टी नाम है जो स्कीमा सेवा के साथ रजिस्टर किया जाता है. इस समस्या की वजह से प्रॉपर्टी या ऑब्जेक्ट होता है अनदेखा नहीं किया जा सकता.

  • इंडेक्स करने के आपके अनुरोध में, ऐसी प्रॉपर्टी मौजूद है जिसका टाइप वैल्यू, टाइप की वैल्यू से अलग है स्कीमा में रजिस्टर किया गया हो. इस समस्या की वजह से Cloud Search गड़बड़ी दिखाता है तय करें.

कई क्वेरी टाइप की मदद से अपने स्कीमा की जांच करना

प्रोडक्शन डेटा का एक बड़ा डेटा स्टोर करने के लिए अपने स्कीमा को रजिस्टर करने से पहले, छोटे टेस्ट डेटा रिपॉज़िटरी (डेटा स्टोर करने की जगह) के साथ टेस्ट करने के बारे में सोचें. किसी एक छोटे टेस्ट रिपॉज़िटरी की मदद से आप अपने स्कीमा में तेज़ी से बदलाव कर सकते हैं, और इंडेक्स किए गए डेटा को मिटा सकते हैं. ऐसा करने से, बड़ा इंडेक्स या मौजूदा प्रोडक्शन इंडेक्स है. टेस्ट डेटा रिपॉज़िटरी के लिए, एक ऐसा ACL जो सिर्फ़ टेस्ट उपयोगकर्ता को अनुमति देता है, ताकि अन्य उपयोगकर्ता इस डेटा को न देख सकें खोज के नतीजों में.

खोज क्वेरी की पुष्टि करने के लिए, सर्च इंटरफ़ेस बनाने के लिए, यह तरीका अपनाएं खोज इंटरफ़ेस

इस सेक्शन में अलग-अलग तरह की कई उदाहरण क्वेरी हैं, जिनका इस्तेमाल आप जांच करने के लिए कर सकते हैं मूवी स्कीमा.

सामान्य क्वेरी से टेस्ट करें

सामान्य क्वेरी से डेटा सोर्स में वे सभी आइटम दिखते हैं जिनमें किसी खास सामान की जानकारी होती है स्ट्रिंग. खोज इंटरफ़ेस का इस्तेमाल करके, किसी फ़िल्म के लिए सामान्य क्वेरी चलाई जा सकती है डेटा स्रोत के लिए "titanic" शब्द लिखें और Return दबाएं. सभी "टाइटैनिक" शब्द वाली फ़िल्में को खोज नतीजों में दिखाया जाना चाहिए.

किसी ऑपरेटर से जांच करना

क्वेरी में ऑपरेटर जोड़ने पर, उससे मिलते-जुलते आइटम ही सीमित हो जाते हैं ऑपरेटर मान. उदाहरण के लिए, हो सकता है कि आप actor ऑपरेटर का उपयोग करके किसी खास अभिनेता की सभी फ़िल्में. सर्च इंटरफ़ेस का इस्तेमाल करके, यह ऑपरेटर क्वेरी को बस operator=value जोड़े में टाइप करके क्वेरी करता है, जैसे &quot;actor:Zane&quot; और &quot;actor:Zane&quot; दबा रहे हैं. कलाकार के तौर पर ज़ेन की सभी फ़िल्में को खोज नतीजों में दिखाया जाना चाहिए.

अपना स्कीमा ट्यून करें

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

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

स्कीमा बदलने के बाद पेज को फिर से इंडेक्स करना

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

  • ऑपरेटर के नाम.
  • पूर्णांक की कम से कम और ज़्यादा से ज़्यादा वैल्यू.
  • पूर्णांक और ईनम के हिसाब से क्रम में लगाई गई रैंकिंग.
  • डेटा रीफ़्रेश करने के विकल्प.
  • डिसप्ले के विकल्प

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

  • नई प्रॉपर्टी या ऑब्जेक्ट जोड़ना या हटाना
  • isReturnable, isFacetable या isSortable को false से बदलकर true.

आपको isFacetable या isSortable को सिर्फ़ true पर सेट करना चाहिए, अगर आपके पास इस्तेमाल के उदाहरण और ज़रूरतों को साफ़ तौर पर समझ सकें.

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

इन प्रॉपर्टी में बदलाव करने की अनुमति नहीं है

अपने डेटा को फिर से इंडेक्स करने पर भी, स्कीमा में कुछ बदलाव करने की अनुमति नहीं है. इसकी वजह यह है कि इंडेक्स को नुकसान पहुंचा सकता है या खराब या अलग-अलग खोज के नतीजे जनरेट कर सकता है. ये इसमें ये बदलाव शामिल हैं:

  • प्रॉपर्टी का डेटा टाइप.
  • प्रॉपर्टी का नाम.
  • exactMatchWithOperator सेटिंग.
  • retrievalImportance सेटिंग.

हालांकि, इस सीमा का एक तरीका है.

जटिल स्कीमा बदलाव करना

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

ऐसी स्थितियों में, जब आपको अपने स्कीमा की, आप अक्सर अनुमति वाले बदलावों की सीरीज़ कर सकते हैं, जो एक जैसी इफ़ेक्ट. आम तौर पर, सबसे पहले इंडेक्स की गई प्रॉपर्टी को माइग्रेट करना होता है एक पुराने ऑब्जेक्ट की परिभाषा से एक नए ऑब्जेक्ट में बदलना और फिर इंडेक्स करने का ऐसा अनुरोध जिसमें सिर्फ़ नई प्रॉपर्टी का इस्तेमाल किया जाता है.

यहां किसी प्रॉपर्टी का डेटा टाइप या नाम बदलने का तरीका बताया गया है:

  1. अपने स्कीमा में ऑब्जेक्ट की परिभाषा में एक नई प्रॉपर्टी जोड़ें. किसी दूसरे प्रॉडक्ट का इस्तेमाल करें उस प्रॉपर्टी से नाम दिया जा सकता है, जिसे आप बदलना चाहते हैं.
  2. जारी करने के लिए UpdateSchema नई परिभाषा के साथ अनुरोध करें. पूरा स्कीमा भेजना न भूलें. इसमें ये भी शामिल हैं अनुरोध में नई और पुरानी प्रॉपर्टी, दोनों को शामिल करें.
  3. डेटा स्टोर करने की जगह से इंडेक्स को बैकफ़िल करें. इंडेक्स को बैकफ़िल करने के लिए, सभी को भेजें इंडेक्स करने के अनुरोध नई प्रॉपर्टी का इस्तेमाल करते हैं, लेकिन क्योंकि इससे क्वेरी मैच की गिनती दो बार होगी.

    1. बैकफ़िल को इंडेक्स करने के दौरान, नई प्रॉपर्टी देखें और डिफ़ॉल्ट तौर पर पुरानी प्रॉपर्टी पर सेट करें, ताकि अलग-अलग तरह के व्यवहार से बचा जा सके.
    2. बैकफ़िल पूरा होने के बाद, पुष्टि करने के लिए टेस्ट क्वेरी चलाएं.
  4. पुरानी प्रॉपर्टी मिटाएं. कोई दूसरा अंक जारी करें UpdateSchema प्रॉपर्टी के पुराने नाम के बिना अनुरोध करें और पुरानी प्रॉपर्टी का इस्तेमाल बंद करें नाम का इस्तेमाल कर सकते हैं.

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

Cloud Search, मिटाई गई किसी भी प्रॉपर्टी या ऑब्जेक्ट का रिकॉर्ड 30 दिनों तक रखता है ताकि दोबारा इस्तेमाल होने से रोकने के लिए अनचाहे नतीजे मिल सकें. इन 30 दिनों के अंदर, आपको मिटाए गए कॉन्टेंट के सभी इस्तेमाल को माइग्रेट कर लेना चाहिए ऑब्जेक्ट या प्रॉपर्टी. इससे यह पक्का होता है कि अगर आपको उस प्रॉपर्टी को फिर से लागू करना है या ऑब्जेक्ट है, तो आप ऐसा इस तरीके से कर सकते हैं जिससे आपके इंडेक्स की शुद्धता बनी रहती है.

साइज़ की सीमाओं के बारे में जानना

Cloud Search, स्ट्रक्चर्ड डेटा ऑब्जेक्ट और स्कीमा के साइज़ की सीमाएं लागू करता है. ये सीमाएं हैं:

  • टॉप-लेवल के ज़्यादा से ज़्यादा 10 ऑब्जेक्ट डाले जा सकते हैं.
  • स्ट्रक्चर्ड डेटा हैरारकी, ज़्यादा से ज़्यादा 10 लेवल तक हो सकती है.
  • किसी ऑब्जेक्ट में फ़ील्ड की कुल संख्या 1,000 तक हो सकती है, जिसमें प्रिमिटिव फ़ील्ड की संख्या और फ़ील्ड में मैन्युअल रूप से बदलाव कर सकते हैं.

अगले चरण

यहां दिए गए कुछ तरीके आज़माएं:

  1. सर्च इंटरफ़ेस बनाकर अपने स्कीमा की जांच करें.

  2. खोज की क्वालिटी को बेहतर बनाने के लिए, अपने स्कीमा को ट्यून करें.

  3. क्वेरी को बेहतर तरीके से समझने के लिए स्कीमा का स्ट्रक्चर तैयार करें.

  4. जानें कि कैसे तय करने के लिए, _dictionaryEntry स्कीमा आपकी कंपनी में आम तौर पर इस्तेमाल होने वाले शब्दों के समानार्थी शब्द. टूल का इस्तेमाल करने के लिए _dictionaryEntry स्कीमा, समानार्थी शब्द परिभाषित करें.

  5. कोई कनेक्टर बनाएं.