পিপীলিকা কি বানিজ্যিক ? তা না হলে এর টেকনিক্যাল বিষয়গুলো অবশ্যই প্রকাশ হওয়া উচিত । কেনান এতে টেকনিক্যাল আলোচনা - সমালোচনা হবার সুযোগ থাকবে, এটি আরো সমৃদ্ধ হবে ।
লেখক পোষ্টে বলেছেন : এটিকে একটি বেসিক বাংলা সার্চ ইন্জিনের কাঠামো হিসেবে দাড় করিয়ে ফেলেন ২০১০ সালের শেষের দিকে। উনারা ডেটাবেইস কোর্স প্রজেক্ট হিসেবে একটা ছোট স্কেলের সার্চ ইন্জিন বানিয়েছিলেন পিপীলিকা নামে। এই দুটো প্রজেক্টকে মার্জ করে শুরু হয় মূল সার্চ ইঞ্জিনের কাজ।
প্রশ্ন হচ্ছে পিপীলিকা কি এখনও ডাটাবেজ নির্ভর ? তবে কিন্তু পিপীলিকার গতিতে চলবে । ২০০১-২ এ একটি যুক্তরাষ্ট্র ভিত্তিক সফটওয়ার ফার্মের জন্য কাজ করি ওয়ার্ল্ড ব্যাংকের একটা প্রজেক্ট - এ। সেখানে সার্চ ইন্জিন তৈরীর কাজ ছিল, ওয়ার্ল্ড ব্যাংকের বহু বছরের ডমুমেন্ট থেকে । আমার ম্যানেজার ডাটাবেস ভিত্তিক সমাধানকেই অগ্রাধিকার দিতেন । আমি হিসেব নিকেশ করে দেখিয়ে দেই ডাটাবেস সার্চ থেকে সরাসরি সি/সি++ দিয়ে ফাইল থেকে সার্চ অনেক ফাষ্ট হবে । যদিও ডাটাবেস এপ্লিকেশন তৈরী সহজ সাধ্য, সচারাচর ফেইল করবে না । কিন্তু স্পীড যদি "কী ফ্যাক্টর " হয় তবে অবশ্যই ডাটাবেস দিয়ে নয় । অবশেষে প্রজেক্ট হয় সি++ এ ।
তবে অপরিকল্পিত ভাবে করা সি++ এর কোড থেকে, ডাটাবেস সার্ভার ভাল সমাধান দিবে, বিশেষ করে যদি ঠিকমত ইনডেক্সিং করা থাকে। আর সি++ এ করা সার্চ ইন্জিনের ইনডেক্সং যদি আপনি নিজেই করে রাখেন, তবে কিন্তু সেটা ডাটাবেস থেকেও কম সময়ে এক্সিকিউট করবে। আর আমাদের সমাধানেও আমরা সেটা ব্যবহার করেছিলাম । তবে তথ্য বেশী হয়ে গেলে ইনডেক্স ফাইলের সাইজও বড় হয়ে যায়, আর সেটা লোড করতেও সময় লাগে বেশ খানিকটা ।
দ্বিতীয় সমস্যা : সি++ এ ডিস্ক একসেস করতে গিয়ে ইনডেক্স ফাইলের সব ডেটা যদি মেমরীতে নেওয়া হয়, তবে তার সমাধান কি ? এটা আপনি সামলাতে পারবেন একটু বুদ্ধি খাটিয়েই । যেহেতু আপনি নিজস্ব এ্যারে বা লিষ্ট ব্যব হার করে ডেটা রাখছেন, ফাইল পয়েন্টারও নিজেই আগে পিছে নিচ্ছেন তাই ফাইলের ঠিক কত নাম্বার বাইটে, কত জায়গা নিয়ে একটি নির্দিষ্ট শব্দের ইনডেক্স ডেটা থাকছে তা আপনি ছোট একটা ফাইলে রেখে দিন । আর এ সমাধানটা ব্যব হার করার পর আমরা যাদুকরি ফল পেয়েছিলাম । প্রথমবার যখন আমার ম্যানেজারকে এই টেকনিক প্রয়োগ করে সার্চ আউটপুট দেখাই, এত দ্রুত রেজাল্ট আসছিল যে ম্যানেজার শুরুতে বিশ্বাসই করতে পারছিলেন না যে আদৌ সার্চ শেষ করে রেজাল্ট আসচে না এমনিতেই এসে যাচ্ছে ।
সে যাত্রায় স্পীড আর বাড়ানোর প্রয়োজন হয়নি । বছর পাচেক পর আরেক ফার্মে ( সেটাও যুক্তরাষ্ট্র ভিত্তিক, আমি তখন সেখানে নিজেই ম্যানেজার) একটা ওয়েব বেজ এপ্লিকেশনের একটা ফিচার এক্সিকিউট করতে গিয়ে স্পীড বাড়ানোর দরকার হল । কোন ক্লাসের একটা মেথড কল করলে শুরুতেই একটা ভাল সময় খেয়ে ফেলে একটা ইন্সট্যান্স তৈরী হতে । তাই খুব দ্রুত ইন্টারেক্টিভ কিছু তৈরী করা যাচ্ছিল না । এর আগে ষ্টেটিক ডেটা / ষ্টেটিক ক্লাস নিয়ে পড়েছি, রিয়েল লাইফ প্রজেক্ট -এ প্রয়োগ করি নি । সেবার ফল পেলাম স্ট্যাটিক ক্লাস ব্যবহার করে।
সোজা ভাষায় বললে আপনি যখন গুগুলে "এবিসি " লিখে সার্চ দেন, তখন নিশ্চয়ই কোন ফাংশন/প্রসিডিওর/মেথড কল হয় । আর প্রতিটা কলের জন্যি ঐ মেথডের একটা ইন্সট্যান্স তৈরী হয়, আর এতে কিছুটা হলেও সময় লাগে । এই খানে এই সময় কমানোর কোন রস্টা আমার জানা নেই। তবে সার্চ কীওয়ার্ড লেখার সময় দেখা যায় কিছু শব্দ টাইপের আগে আগেই এসে যায় । এগুলো আনতে ঠিক/গ্রহণযোগ্য স্পীড পেতে অব্শ্যই ব্যাক এন্ড - এ স্ট্যাটিক ক্লাস বানাতে হবে । আর ওয়েব এপ্লিকেশনে রিফ্রেশের ঝামেলা এড়িয়ে দ্রুত ইন্টারেক্টিভ কিছু দেখাতে ফ্রন্টে অবশ্যই এ্যাজাক্স লাগবে ।
এত লম্বা বয়ানের উদ্দেশ্য কি ????
সার্চ ইন্জিন নিয়ে এককালে হাড়ভাংগা খাটুনি করেছিলাম বলেই জানতে আগ্রহ হয়, পিপীলিকা কি কি প্রযুক্তি খটিয়েছে? কোন কোন জায়গায় ? কিভাবে - কি করে ?
ষ্টিকি পোষ্টে তর্পন বলেছেন: আমি ওপেসসোর্সের সমর্থক হিসেবে দাবী করবো সম্ভব হলে সার্চ ইঞ্জিনটি ওপেনসোর্সে উন্মুক্ত করা হোক। তাতে গবেষণা কর্মের মৌলিকত্ব আরো বেশি প্রচারিত হবে, প্রমাণিত হবে।
পিপীলিকা কি কখনই আমাদের এই পিপাসা মেটাবে কোনদিন ?
সর্বশেষ এডিট : ১৫ ই এপ্রিল, ২০১৩ রাত ৮:৩৪