গুগল ক্লাউড সার্চ স্কিমা হলো একটি JSON কাঠামো যা ডেটা ইন্ডেক্সিং এবং কোয়েরি করার জন্য অবজেক্ট, প্রোপার্টি এবং অপশন সংজ্ঞায়িত করে। আপনার কন্টেন্ট কানেক্টর রিপোজিটরি ডেটার কাঠামো তৈরি ও ইন্ডেক্স করার জন্য নিবন্ধিত স্কিমাটি ব্যবহার করে।
এপিআই-তে একটি JSON স্কিমা অবজেক্ট প্রদান করে আপনি একটি স্কিমা তৈরি করেন। ডেটা ইন্ডেক্স করার আগে আপনাকে প্রতিটি রিপোজিটরির জন্য একটি স্কিমা রেজিস্টার করতে হবে।
এই ডকুমেন্টে স্কিমা তৈরির প্রাথমিক বিষয়গুলো আলোচনা করা হয়েছে। সার্চ অভিজ্ঞতা উন্নত করতে, ‘সার্চের মান উন্নত করুন’ দেখুন।
একটি স্কিমা তৈরি করুন
আপনার ক্লাউড সার্চ স্কিমা তৈরি করতে এই ধাপগুলো অনুসরণ করুন:
- ব্যবহারকারীর প্রত্যাশিত আচরণ শনাক্ত করুন
- একটি ডেটা উৎস শুরু করুন
- আপনার বস্তুগুলো সংজ্ঞায়িত করুন
- অবজেক্টের বৈশিষ্ট্য সংজ্ঞায়িত করুন
- আপনার স্কিমা নিবন্ধন করুন
- আপনার ডেটা সূচীবদ্ধ করুন
- আপনার স্কিমা পরীক্ষা করুন
- আপনার স্কিমাটি সামঞ্জস্য করুন
ব্যবহারকারীর প্রত্যাশিত আচরণ শনাক্ত করুন
ব্যবহারকারীরা কীভাবে অনুসন্ধান করে তা আগে থেকে অনুমান করতে পারলে আপনার স্কিমা কৌশল নির্ধারণে সুবিধা হয়। একটি মুভি ডেটাবেসের ক্ষেত্রে, ব্যবহারকারীরা হয়তো ‘রবার্ট রেডফোর্ড অভিনীত চলচ্চিত্র’ লিখে অনুসন্ধান করতে পারে। আপনার স্কিমাকে অবশ্যই একজন নির্দিষ্ট অভিনেতার চলচ্চিত্রের জন্য কোয়েরি সমর্থন করতে হবে।
ব্যবহারকারীর আচরণের সাথে আপনার স্কিমা সামঞ্জস্যপূর্ণ করতে:
- বিভিন্ন ব্যবহারকারীর কাছ থেকে আসা নানান ধরনের প্রশ্ন মূল্যায়ন করুন।
- যৌক্তিক ডেটা সেট বা অবজেক্ট শনাক্ত করুন, যেমন একটি "চলচ্চিত্র"।
- Identify properties (attributes) like title or release date.
- "Raiders of the Lost Ark"-এর মতো প্রপার্টিগুলোর জন্য বৈধ মান শনাক্ত করুন।
- কালানুক্রমিক ক্রম বা দর্শকের রেটিং-এর মতো সাজানো ও ক্রম নির্ধারণের প্রয়োজনীয়তাগুলো স্থির করুন।
- অটোকমপ্লিট সাজেশন উন্নত করার জন্য চাকরির ভূমিকার মতো প্রাসঙ্গিক বৈশিষ্ট্যগুলো শনাক্ত করুন।
- এই অবজেক্ট, প্রোপার্টি এবং উদাহরণ মানগুলো তালিকাভুক্ত করুন। অপারেটর অপশনগুলো নির্ধারণ করতে এই তালিকাটি ব্যবহার করুন।
আপনার ডেটা উৎস শুরু করুন
একটি ডেটা সোর্স হলো গুগল ক্লাউডে সংরক্ষিত ইনডেক্স করা রিপোজিটরি ডেটা। তৃতীয় পক্ষের ডেটা সোর্স পরিচালনা দেখুন। যখন কোনো ব্যবহারকারী একটি ফলাফলে ক্লিক করেন, ক্লাউড সার্চ ইনডেক্সিং অনুরোধ থেকে প্রাপ্ত URL ব্যবহার করে তাদেরকে সেই আইটেমটিতে নিয়ে যায়।
আপনার বস্তুগুলো সংজ্ঞায়িত করুন
The object is the fundamental unit of a schema. Logical structures like "movie" or "person" are objects. Each object has properties like title, duration, or name.

স্কিমা হলো objectDefinitions ট্যাগে থাকা অবজেক্ট ডেফিনিশনগুলোর একটি তালিকা।
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
প্রতিটি অবজেক্টের জন্য অনন্য নাম ব্যবহার করুন, যেমন movie । স্কিমা পরিষেবা এই নামগুলিকে কী (key) হিসাবে ব্যবহার করে। ObjectDefinition দেখুন।
অবজেক্টের বৈশিষ্ট্য সংজ্ঞায়িত করুন
propertyDefinitions সেকশনে টাইটেল এবং রিলিজ ডেটের মতো প্রপার্টিগুলো নির্ধারণ করুন। freshnessOptions (র্যাঙ্কিং) এবং displayOptions (UI লেবেল)-এর জন্য options ব্যবহার করুন।
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": 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"
}
}
}
]
}]
}
একটি সম্পত্তির সংজ্ঞায় অন্তর্ভুক্ত থাকে:
- একটি
nameস্ট্রিং। - প্রকার-নিরপেক্ষ বিকল্প (যেমন,
isReturnable)। - একটি প্রকার এবং প্রকার-নির্দিষ্ট বিকল্পসমূহ (যেমন,
textPropertyOptions)। - সার্চ অপারেটরের জন্য
operatorOptions। - UI লেবেলগুলির জন্য
displayOptions।
আপনি বিভিন্ন অবজেক্টের মধ্যে প্রপার্টির নাম পুনরায় ব্যবহার করতে পারেন। উদাহরণস্বরূপ, movieTitle একটি movie অবজেক্ট এবং একটি person অবজেক্ট উভয়ের ফিল্মোগ্রাফিতেই থাকতে পারে।
প্রকার-নিরপেক্ষ বিকল্প যোগ করুন
PropertyDefinition-এ একটি প্রপার্টির ধরন নির্বিশেষে তার সার্চ কার্যকারিতা কনফিগার করার জন্য বুলিয়ান অপশন রয়েছে। এই অপশনগুলোর ডিফল্ট মান false থাকে এবং এগুলো ব্যবহার করার জন্য অবশ্যই true সেট করতে হবে।
-
isReturnable: Query API ব্যবহার করে অনুসন্ধানের ফলাফলে প্রপার্টির ডেটা ফেরত দেওয়া হবে কিনা, তা জানতে এটিকেtrueসেট করুন। Non-returnable প্রপার্টিগুলো ফলাফলে প্রদর্শিত না হয়েও অনুসন্ধান বা র্যাঙ্কিংয়ের জন্য ব্যবহার করা যেতে পারে। -
isRepeatable: যদি প্রপার্টিটির একাধিক মান থাকতে পারে, তবে এটিকেtrueসেট করুন। উদাহরণস্বরূপ, একটি সিনেমার মুক্তির তারিখ একটি কিন্তু অভিনেতা একাধিক হতে পারে। -
isSortable: যদি প্রপার্টিটি সর্টিং-এর জন্য ব্যবহার করা যায়, তবে এটিকেtrueসেট করুন। যদিisRepeatableমানtrueহয় অথবা প্রপার্টিটি কোনো রিপিটেবল সাব-অবজেক্টের ভেতরে থাকে, তবে এটিtrueহতে পারে না। -
isFacetable: যদি প্রপার্টিটি ফ্যাসেট (সার্চের ফলাফল পরিমার্জন করতে ব্যবহৃত অ্যাট্রিবিউট) তৈরি করার জন্য ব্যবহার করা যায়, তাহলে এটিকেtrueসেট করুন।-
isReturnableমানtrueহওয়া আবশ্যক। - শুধুমাত্র enum, boolean, এবং text প্রপার্টিগুলোর জন্য সমর্থিত।
-
-
isWildcardSearchable: এই প্রপার্টিতে ব্যবহারকারীদের ওয়াইল্ডকার্ড সার্চ করার অনুমতি দিতে এটিকে 'trueসেট করুন। এই অপশনটি শুধুমাত্র টেক্সট প্রপার্টির জন্য উপলব্ধ এবং এর আচরণexactMatchWithOperatorসেটিংয়ের উপর নির্ভর করে।- যদি
exactMatchWithOperatorমানtrueহয়: টেক্সট ভ্যালুটিকে একটি একক টোকেন হিসেবে গণ্য করা হয়।science-*এর মতো একটি কোয়েরিscience-fictionভ্যালুটির সাথে ম্যাচ করে। - যদি
exactMatchWithOperatorfalseহয়: টেক্সট ভ্যালুটি টোকেনাইজ করা হয়।sci*বাfi*এর মতো কোয়েরিscience-fictionসাথে মেলে, কিন্তুscience-*মেলে না।
- যদি
প্রকার সংজ্ঞায়িত করুন
উপযুক্ত প্রপার্টি অপশনস অবজেক্ট (যেমন, textPropertyOptions ) সংজ্ঞায়িত করে ডেটা টাইপ সেট করুন। যদি আপনি সমস্ত সম্ভাব্য মান জানেন, তবে এনাম ( enumPropertyOptions ) ব্যবহার করুন। একটি প্রপার্টির কেবল একটিই ডেটা টাইপ থাকতে পারে।
অপারেটর বিকল্পগুলি সংজ্ঞায়িত করুন
operatorOptions বর্ণনা করে যে একটি প্রপার্টি কীভাবে সার্চ অপারেটর হিসেবে কাজ করে।
প্রতিটি operatorOptions একটি operatorName প্রয়োজন (যেমন, title )। এটিই সেই প্যারামিটার যা ব্যবহারকারীরা কোয়েরি করার সময় টাইপ করেন (যেমন, title:titanic )। সহজবোধ্য নাম ব্যবহার করুন এবং ব্যবহারকারীদের কাছে তা প্রকাশ করুন।
আপনি একই ধরনের প্রপার্টিগুলোর মধ্যে একটি operatorName শেয়ার করতে পারেন। সেই নামটি ব্যবহার করে করা কোয়েরিগুলো মিলে যাওয়া সমস্ত প্রপার্টি থেকে ফলাফল নিয়ে আসে।
তুলনা কোয়েরির জন্য সর্টেবল প্রপার্টিতে lessThanOperatorName এবং greaterThanOperatorName অন্তর্ভুক্ত থাকতে পারে। টেক্সট প্রপার্টিতে সম্পূর্ণ ভ্যালুটিকে একটি একক টোকেন হিসেবে গণ্য করার জন্য exactMatchWithOperator ব্যবহার করা যেতে পারে।
ডিসপ্লে বিকল্প যোগ করুন
ঐচ্ছিক displayOptions সেকশনটিতে একটি displayLabel থাকে। এটি একটি ব্যবহারকারী-বান্ধব লেবেল যা সার্চ রেজাল্টে দেখানো হয়।
সাজেশন ফিল্টারিং অপারেটর যোগ করুন
অটোকমপ্লিট সাজেশন ফিল্টার করার জন্য একটি প্রপার্টি নির্ধারণ করতে suggestionFilteringOperators[] ব্যবহার করুন (যেমন, ব্যবহারকারীর পছন্দের জনরা অনুযায়ী মুভি সাজেশন ফিল্টার করা)। আপনি শুধুমাত্র একটি সাজেশন ফিল্টার নির্ধারণ করতে পারবেন।
আপনার স্কিমা নিবন্ধন করুন
আপনার ডেটা সোর্স আইডি ব্যবহার করে স্কিমা সার্ভিসে আপনার স্কিমাটি নিবন্ধন করুন। একটি UpdateSchema অনুরোধ পাঠান:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
আপনার স্কিমা নিবন্ধন না করেই পরীক্ষা করতে validateOnly: true ব্যবহার করুন।
আপনার ডেটা সূচীবদ্ধ করুন
নিবন্ধনের পরে, সাধারণত একটি কানেক্টর ব্যবহার করে ইনডেক্স কলের মাধ্যমে ডেটা সোর্সটি পূরণ করুন।
ইনডেক্সিং অনুরোধের উদাহরণ:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
আপনার স্কিমা পরীক্ষা করুন
প্রোডাকশনের আগে একটি ছোট রিপোজিটরি দিয়ে পরীক্ষা করুন। একটি ACL তৈরি করুন যা ফলাফলকে শুধুমাত্র একজন টেস্ট ইউজারের মধ্যে সীমাবদ্ধ রাখে।
- সাধারণ অনুসন্ধান : কোনো একটি স্ট্রিং (যেমন, "টাইটানিক") অনুসন্ধান করলে তার সাথে মিলে যাওয়া সমস্ত আইটেম দেখা যাবে।
- অপারেটর কোয়েরি : ফলাফল সীমিত করতে একটি অপারেটর (যেমন,
actor:Zane) ব্যবহার করুন।
আপনার স্কিমাটি সামঞ্জস্য করুন
ব্যবহারকারীদের মতামত পর্যবেক্ষণ করুন এবং আপনার স্কিমা সামঞ্জস্য করুন। আপনি নতুন ফিল্ড ইনডেক্স করতে পারেন অথবা অপারেটরগুলোর নাম পরিবর্তন করে সেগুলোকে আরও সহজবোধ্য করে তুলতে পারেন।
স্কিমা পরিবর্তনের পর পুনরায় সূচীকরণ করুন
নিম্নলিখিত পরিবর্তনগুলির জন্য আপনাকে পুনরায় সূচীকরণ করতে হবে না:
- অপারেটরের নাম।
- সংখ্যাসূচক সীমা।
- ক্রমিক র্যাঙ্কিং।
- সতেজতা বা প্রদর্শনের বিকল্পসমূহ।
আপনাকে অবশ্যই নিম্নলিখিতগুলির জন্য পুনরায় সূচীকরণ করতে হবে:
- প্রোপার্টি বা অবজেক্ট যোগ করা বা অপসারণ করা।
-
isReturnable,isFacetableবাisSortableকেtrueতে পরিবর্তন করা। - কোনো প্রপার্টিকে
isSuggestableচিহ্নিত করা।
অননুমোদিত সম্পত্তি পরিবর্তন
যেসব পরিবর্তন সূচককে নষ্ট করে বা অসঙ্গত ফলাফলের কারণ হয়, সেগুলো অনুমোদিত নয়, যার মধ্যে অন্তর্ভুক্ত হলো:
- প্রপার্টির ডেটা টাইপ বা নাম।
-
exactMatchWithOperatorঅথবাretrievalImportanceসেটিংস।
একটি জটিল স্কিমা পরিবর্তন করুন
অননুমোদিত পরিবর্তন করতে, পুরোনো ডেফিনিশন থেকে নতুন ডেফিনিশনে প্রোপার্টিগুলো মাইগ্রেট করুন:
- স্কিমাতে ভিন্ন নামে একটি নতুন প্রপার্টি যোগ করুন।
- নতুন এবং পুরাতন উভয় প্রপার্টি সহ স্কিমাটি নিবন্ধন করুন।
- শুধুমাত্র নতুন প্রপার্টিটি ব্যবহার করে ইনডেক্সটি ব্যাকফিল করুন।
- স্কিমা থেকে পুরানো প্রপার্টিটি মুছে ফেলুন।
- নতুন প্রপার্টি নামটি ব্যবহার করার জন্য আপনার কোয়েরি কোড আপডেট করুন।
পুনরায় ব্যবহারের সমস্যা রোধ করতে ক্লাউড সার্চ মুছে ফেলা আইটেমগুলো ৩০ দিনের জন্য রেকর্ড করে রাখে।
আকারের সীমাবদ্ধতা
- সর্বাধিক ১০টি শীর্ষ-স্তরের অবজেক্ট।
- সর্বোচ্চ ১০ স্তর পর্যন্ত গভীরতা।
- প্রতিটি অবজেক্টে সর্বোচ্চ ১০০০টি ফিল্ড (নেস্টেড ফিল্ড সহ)।
পরবর্তী পদক্ষেপ
- একটি অনুসন্ধান ইন্টারফেস তৈরি করুন।
- অনুসন্ধানের মান উন্নত করুন ।
- সর্বোত্তম কোয়েরি ব্যাখ্যার জন্য একটি স্কিমা গঠন করুন ।
- সমার্থক শব্দের সংজ্ঞা দাও ।