ক্লাউড সার্চ টিউটোরিয়ালের এই পৃষ্ঠায় ডেটা ইন্ডেক্স করার জন্য কীভাবে একটি ডেটা সোর্স এবং কন্টেন্ট কানেক্টর সেট আপ করতে হয় তা দেখানো হয়েছে। এই টিউটোরিয়ালটি শুরু থেকে করতে, ক্লাউড সার্চ গেটিং স্টার্টেড টিউটোরিয়ালটি দেখুন।
সংযোগকারীটি তৈরি করুন
আপনার ওয়ার্কিং ডিরেক্টরি cloud-search-samples/end-to-end/connector ডিরেক্টরিতে পরিবর্তন করুন এবং এই কমান্ডটি চালান:
mvn package -DskipTests
এই কমান্ডটি কন্টেন্ট কানেক্টর তৈরির জন্য প্রয়োজনীয় ডিপেন্ডেন্সিগুলো ডাউনলোড করে এবং কোডটি কম্পাইল করে।
পরিষেবা অ্যাকাউন্টের পরিচয়পত্র তৈরি করুন
ক্লাউড সার্চ এপিআই কল করার জন্য কানেক্টরটির সার্ভিস অ্যাকাউন্ট ক্রেডেনশিয়াল প্রয়োজন। ক্রেডেনশিয়াল তৈরি করতে:
- গুগল ক্লাউড কনসোলে ফিরে যান।
- বাম দিকের নেভিগেশনে, ক্রেডেনশিয়ালস (Credentials) -এ ক্লিক করুন। "ক্রেডেনশিয়াল" (Credential) পৃষ্ঠাটি প্রদর্শিত হবে।
- + CREATE CREDENTIALS ড্রপ-ডাউন তালিকাটিতে ক্লিক করুন এবং Service account নির্বাচন করুন। "Create service account" পৃষ্ঠাটি প্রদর্শিত হবে।
- সার্ভিস অ্যাকাউন্ট নেম ফিল্ডে "tutorial" লিখুন।
- সার্ভিস অ্যাকাউন্ট নামের ঠিক পরেই থাকা সার্ভিস অ্যাকাউন্ট আইডি-র মানটি লক্ষ্য করুন। এই মানটি পরবর্তীতে ব্যবহার করা হবে।
- CREATE-এ ক্লিক করুন। "পরিষেবা অ্যাকাউন্টের অনুমতি (ঐচ্ছিক)" ডায়ালগ বক্সটি প্রদর্শিত হবে।
- CONTINUE-এ ক্লিক করুন। "ব্যবহারকারীদের এই পরিষেবা অ্যাকাউন্টে অ্যাক্সেস দিন (ঐচ্ছিক)" ডায়ালগ বক্সটি প্রদর্শিত হবে।
- DONE-এ ক্লিক করুন। "Credentials" স্ক্রিনটি প্রদর্শিত হবে।
- সার্ভিস অ্যাকাউন্টস-এর অধীনে, সার্ভিস অ্যাকাউন্ট ইমেইলটিতে ক্লিক করুন। "সার্ভিস অ্যাকাউন্ট ডিটেইলস" পেজটি প্রদর্শিত হবে।
- Keys-এর অধীনে, ADD KEY ড্রপ-ডাউন তালিকাটিতে ক্লিক করুন এবং Create new key নির্বাচন করুন। "Create private key" ডায়ালগ বক্সটি প্রদর্শিত হবে।
- তৈরি করুন- এ ক্লিক করুন।
- (ঐচ্ছিক) যদি "আপনি কি console.cloud.google.com-এ ডাউনলোডের অনুমতি দিতে চান?" ডায়ালগ বক্সটি আসে, তাহলে Allow-এ ক্লিক করুন।
- আপনার কম্পিউটারে একটি প্রাইভেট কী ফাইল সেভ করা আছে। ডাউনলোড করা ফাইলটির অবস্থান নোট করে রাখুন। এই ফাইলটি কন্টেন্ট কানেক্টর কনফিগার করতে ব্যবহৃত হয়, যাতে এটি গুগল ক্লাউড সার্চ এপিআই (API) কল করার সময় নিজেকে প্রমাণীকৃত করতে পারে।
তৃতীয় পক্ষের সমর্থন শুরু করুন
অন্য কোনো ক্লাউড সার্চ এপিআই কল করার আগে গুগল ক্লাউড সার্চের জন্য থার্ড-পার্টি সাপোর্ট চালু করুন।
তৃতীয় পক্ষের সমর্থন চালু করতে:
- আপনার ক্লাউড সার্চ প্ল্যাটফর্ম প্রজেক্টে ওয়েব অ্যাপ্লিকেশন ক্রেডেনশিয়াল তৈরি করুন। ক্রেডেনশিয়াল তৈরি করুন দেখুন। আপনার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট প্রয়োজন হবে।
- OAuth 2.0 প্লেগ্রাউন্ড ব্যবহার করে একটি অ্যাক্সেস টোকেন সংগ্রহ করুন:
- OAuth 2.0 কনফিগারেশন (সেটিংস আইকন)-এ ক্লিক করুন এবং 'Use your own OAuth credentials' বিকল্পটি চেক করুন।
- আপনার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট প্রবেশ করান।
- স্কোপস ফিল্ডে
https://www.googleapis.com/auth/cloud_search.settingsলিখুন এবং অথরাইজ এপিআই (Authorize APIs) এ ক্লিক করুন। - টোকেনগুলির জন্য বিনিময় অনুমোদন কোডে ক্লিক করুন।
এই কার্ল কমান্ডটি চালান, এবং
[YOUR_ACCESS_TOKEN]এর জায়গায় আপনার টোকেনটি বসান:curl --request POST \ 'https://cloudsearch.googleapis.com/v1:initializeCustomer' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{}' \ --compressedসফল হলে, রেসপন্স বডিতে একটি
operationঅন্তর্ভুক্ত থাকে। এটি ব্যর্থ হলে, ক্লাউড সার্চ সাপোর্টের সাথে যোগাযোগ করুন।প্রারম্ভিকতা যাচাই করতে
operations.getব্যবহার করুন:curl 'https://cloudsearch.googleapis.com/v1/operations/<var>operation_name</var>?key=[YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressedপ্রারম্ভিকীকরণ সম্পূর্ণ হয় যখন
donetrueহয়।
ডেটা উৎস তৈরি করুন
এরপর, অ্যাডমিন কনসোলে একটি ডেটা সোর্স তৈরি করুন। এই ডেটা সোর্সটি কানেক্টর ব্যবহার করে কন্টেন্ট ইন্ডেক্স করার জন্য একটি নেমস্পেস প্রদান করে।
- গুগল অ্যাডমিন কনসোল খুলুন।
- অ্যাপস আইকনে ক্লিক করুন। 'অ্যাপস অ্যাডমিনিস্ট্রেশন' পেজটি প্রদর্শিত হবে।
- Google Workspace-এ ক্লিক করুন। 'Apps Google Workspace administration' পৃষ্ঠাটি প্রদর্শিত হবে।
- নিচে স্ক্রোল করুন এবং ক্লাউড সার্চ-এ ক্লিক করুন। 'গুগল ওয়ার্কস্পেসের জন্য সেটিংস' পৃষ্ঠাটি প্রদর্শিত হবে।
- ‘তৃতীয় পক্ষের ডেটা উৎস’ -এ ক্লিক করুন। ‘ডেটা উৎস’ পৃষ্ঠাটি প্রদর্শিত হবে।
- গোলাকার হলুদ + চিহ্নটিতে ক্লিক করুন। "নতুন ডেটা উৎস যোগ করুন" ডায়ালগ বক্সটি প্রদর্শিত হবে।
- ডিসপ্লে নেম ফিল্ডে "tutorial" টাইপ করুন।
- 'সার্ভিস অ্যাকাউন্ট ইমেল অ্যাড্রেস' ফিল্ডে, পূর্ববর্তী বিভাগে আপনার তৈরি করা সার্ভিস অ্যাকাউন্টের ইমেল অ্যাড্রেসটি লিখুন। যদি আপনি সার্ভিস অ্যাকাউন্টের ইমেল অ্যাড্রেসটি না জানেন, তবে 'সার্ভিস অ্যাকাউন্টস' পেজ থেকে মানটি খুঁজে নিন।
- ADD-এ ক্লিক করুন। "সফলভাবে ডেটা সোর্স তৈরি করা হয়েছে" ডায়ালগ বক্সটি প্রদর্শিত হবে।
- OK- তে ক্লিক করুন। নতুন তৈরি হওয়া ডেটা সোর্সের সোর্স আইডিটি নোট করে রাখুন। এই সোর্স আইডিটি কন্টেন্ট কানেক্টর কনফিগার করতে ব্যবহৃত হয়।
গিটহাব এপিআই-এর জন্য একটি ব্যক্তিগত অ্যাক্সেস টোকেন তৈরি করুন।
পর্যাপ্ত কোটা পাওয়ার জন্য কানেক্টরটির গিটহাব এপিআই-তে প্রমাণীকৃত অ্যাক্সেস প্রয়োজন। সরলতার জন্য, কানেক্টরটি OAuth-এর পরিবর্তে ব্যক্তিগত অ্যাক্সেস টোকেন ব্যবহার করে। ব্যক্তিগত টোকেনগুলো OAuth-এর মতোই সীমিত সংখ্যক অনুমতিসহ একজন ব্যবহারকারী হিসেবে প্রমাণীকরণের সুযোগ দেয়।
- গিটহাবে লগ ইন করুন।
- উপরের ডান কোণায় আপনার প্রোফাইল ছবিতে ক্লিক করুন। একটি ড্রপ-ডাউন মেনু দেখা যাবে।
- সেটিংস-এ ক্লিক করুন।
- ডেভেলপার সেটিংস-এ ক্লিক করুন।
- ব্যক্তিগত অ্যাক্সেস টোকেনগুলিতে ক্লিক করুন।
- ব্যক্তিগত অ্যাক্সেস টোকেন তৈরি করতে ক্লিক করুন।
- Note ফিল্ডে 'Cloud Search tutorial' লিখুন।
- public_repo স্কোপটি পরীক্ষা করুন।
- টোকেন তৈরি করুন -এ ক্লিক করুন।
- তৈরি হওয়া টোকেনটি নোট করুন। এটি কানেক্টর দ্বারা গিটহাব এপিআই কল করতে এবং ইন্ডেক্সিং সম্পাদনের জন্য এপিআই কোটা প্রদান করতে ব্যবহৃত হয়।
সংযোগকারীটি কনফিগার করুন
ক্রেডেনশিয়াল এবং ডেটা সোর্স তৈরি করার পরে, এই মানগুলি অন্তর্ভুক্ত করতে কানেক্টর কনফিগারেশন আপডেট করুন:
- কমান্ড লাইন থেকে
cloud-search-samples/end-to-end/connector/ডিরেক্টরিতে পরিবর্তন করুন। - একটি টেক্সট এডিটর দিয়ে
sample-config.propertiesফাইলটি খুলুন। -
api.serviceAccountPrivateKeyFileপ্যারামিটারটিতে আপনার পূর্বে ডাউনলোড করা সার্ভিস ক্রেডেনশিয়ালসের ফাইল পাথটি সেট করুন। -
api.sourceIdপ্যারামিটারটিতে আপনার পূর্বে তৈরি করা ডেটা সোর্সের আইডি সেট করুন। -
github.userপ্যারামিটারটিতে আপনার GitHub ইউজারনেম সেট করুন। - আপনার পূর্বে তৈরি করা অ্যাক্সেস টোকেনটি
github.tokenপ্যারামিটারে সেট করুন। - ফাইলটি সংরক্ষণ করুন।
স্কিমা আপডেট করুন
কানেক্টরটি স্ট্রাকচার্ড এবং আনস্ট্রাকচার্ড উভয় প্রকার কন্টেন্টই ইন্ডেক্স করে। ডেটা ইন্ডেক্স করার আগে, আপনাকে অবশ্যই ডেটা সোর্সের জন্য স্কিমা আপডেট করতে হবে। স্কিমা আপডেট করতে নিম্নলিখিত কমান্ডটি চালান:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.SchemaTool \
-Dexec.args="-Dconfig=sample-config.properties"
সংযোগকারীটি চালান
কানেক্টরটি চালু করতে এবং ইন্ডেক্সিং শুরু করতে, এই কমান্ডটি চালান:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.GithubConnector \
-Dexec.args="-Dconfig=sample-config.properties"
কানেক্টরটির ডিফল্ট কনফিগারেশন হলো googleworkspace অর্গানাইজেশনের একটিমাত্র রিপোজিটরিকে ইন্ডেক্স করা। রিপোজিটরিটি ইন্ডেক্স করতে প্রায় ১ মিনিট সময় লাগে। প্রাথমিক ইন্ডেক্সিংয়ের পর, কানেক্টরটি রিপোজিটরির সেইসব পরিবর্তনের জন্য পোলিং চালিয়ে যায়, যেগুলো ক্লাউড সার্চ ইন্ডেক্সে প্রতিফলিত হওয়া প্রয়োজন।
কোড পর্যালোচনা করা
বাকি অংশগুলোতে সংযোগকারীটি কীভাবে তৈরি করা হয় তা আলোচনা করা হয়েছে।
অ্যাপ্লিকেশনটি শুরু করা হচ্ছে
কানেক্টরের এন্ট্রি পয়েন্ট হলো GithubConnector ক্লাস। এর main মেথডটি SDK-এর IndexingApplication ইনস্ট্যানশিয়েট করে এবং চালু করে।
SDK দ্বারা প্রদত্ত ListingConnector একটি ট্র্যাভার্সাল কৌশল প্রয়োগ করে যা ইনডেক্সে থাকা আইটেমগুলির অবস্থা ট্র্যাক করার জন্য ক্লাউড সার্চ কিউ ব্যবহার করে। এটি GitHub থেকে কন্টেন্ট অ্যাক্সেস করার জন্য স্যাম্পল কানেক্টর দ্বারা বাস্তবায়িত GithubRepository উপর দায়িত্ব অর্পণ করে।
গিটহাব রিপোজিটরিগুলো পরিভ্রমণ করা
সম্পূর্ণ ট্রাভার্সালের সময়, কিউতে ইনডেক্স করার প্রয়োজন হতে পারে এমন আইটেমগুলো পুশ করার জন্য getIds() মেথডটি কল করা হয়।
কানেক্টরটি একাধিক রিপোজিটরি বা অর্গানাইজেশনকে ইন্ডেক্স করতে পারে। কোনো ব্যর্থতার প্রভাব কমাতে, একবারে একটি করে গিটহাব রিপোজিটরি ট্র্যাভার্স করা হয়। ট্র্যাভার্সালের ফলাফলের সাথে একটি চেকপয়েন্ট রিটার্ন করা হয়, যেখানে getIds() এর পরবর্তী কলগুলিতে ইন্ডেক্স করার জন্য রিপোজিটরিগুলোর তালিকা থাকে। যদি কোনো ত্রুটি ঘটে, তবে শুরু থেকে শুরু না করে বর্তমান রিপোজিটরি থেকে ইন্ডেক্সিং পুনরায় শুরু করা হয়।
collectRepositoryItems() ` মেথডটি একটিমাত্র গিটহাব রিপোজিটরির ট্রাভার্সাল পরিচালনা করে। এই মেথডটি কিউ-তে পুশ করার জন্য আইটেমগুলোকে প্রতিনিধিত্বকারী ApiOperations এর একটি কালেকশন রিটার্ন করে। আইটেমগুলোকে একটি রিসোর্স নেম এবং আইটেমটির বর্তমান অবস্থা নির্দেশকারী একটি হ্যাশ ভ্যালু হিসেবে পুশ করা হয়।
গিটহাব রিপোজিটরিগুলোতে পরবর্তী ট্রাভার্সালের জন্য হ্যাশ ভ্যালুটি ব্যবহৃত হয়। এই ভ্যালুটি অতিরিক্ত কন্টেন্ট আপলোড না করেই কন্টেন্ট পরিবর্তিত হয়েছে কিনা তা নির্ধারণ করার জন্য একটি হালকা যাচাই পদ্ধতি প্রদান করে। কানেক্টরটি নির্বিচারে সমস্ত আইটেমকে কিউতে যুক্ত করে। যদি আইটেমটি নতুন হয় বা হ্যাশ ভ্যালুটি পরিবর্তিত হয়, তবে এটিকে কিউতে পোলিংয়ের জন্য উপলব্ধ করা হয়। অন্যথায় আইটেমটিকে অপরিবর্তিত বলে গণ্য করা হয়।
সারি প্রক্রিয়াকরণ করা হচ্ছে
সম্পূর্ণ ট্রাভার্সাল সম্পন্ন হওয়ার পর, কানেক্টরটি ইনডেক্স করার জন্য প্রয়োজনীয় আইটেমগুলোর খোঁজে কিউ থেকে তথ্য সংগ্রহ করা শুরু করে। কিউ থেকে নেওয়া প্রতিটি আইটেমের জন্য getDoc() মেথডটি কল করা হয়। এই মেথডটি গিটহাব থেকে আইটেমটি পড়ে এবং ইনডেক্সিংয়ের জন্য সেটিকে সঠিক রূপে রূপান্তর করে।
যেহেতু কানেক্টরটি লাইভ ডেটার উপর ভিত্তি করে চলে যা যেকোনো সময় পরিবর্তিত হতে পারে, তাই getDoc() ফাংশনটি কিউ-তে থাকা আইটেমটি এখনও বৈধ কিনা তা যাচাই করে এবং ইনডেক্স থেকে যেসব আইটেম আর বিদ্যমান নেই, সেগুলোকে মুছে দেয়।
কানেক্টরটি যে প্রতিটি গিটহাব অবজেক্টকে ইনডেক্স করে, তার সংশ্লিষ্ট indexItem() মেথডটি ক্লাউড সার্চের জন্য আইটেম রিপ্রেজেন্টেশন তৈরি করার কাজটি করে। উদাহরণস্বরূপ, কন্টেন্ট আইটেমগুলির জন্য রিপ্রেজেন্টেশন তৈরি করতে:
এরপরে, সার্চ ইন্টারফেসটি স্থাপন করুন।