অ্যাপাচি সলর (Apache Solr) একটি শক্তিশালী সার্চ প্ল্যাটফর্ম যা দ্রুত ডেটা ইনডেক্সিং এবং সার্চিং করার জন্য ব্যবহৃত হয়। সলর একটি Near Real-Time (NRT) সার্চ সিস্টেম প্রদান করে, যার মাধ্যমে ডেটা দ্রুত ইনডেক্স করার পর তা খুব শীঘ্রই সার্চের জন্য উপলব্ধ হয়ে যায়। NRT সার্চ সিস্টেম সাধারণত ডেটার সাথে রিয়েল-টাইম ইন্টারঅ্যাকশন এবং আপডেট করার ক্ষেত্রে খুবই কার্যকরী।
এই টিউটোরিয়ালে আমরা Near Real-Time (NRT) Search সলরে কিভাবে কনফিগার করতে হয় তা আলোচনা করব।
Near Real-Time (NRT) Search Overview
Near Real-Time Search (NRT) এমন একটি সার্চ প্রযুক্তি যা ডেটা ইনডেক্সিং এবং কুয়েরি করার মধ্যে একেবারে কম সময়ের বিলম্ব সৃষ্টি করে। সলরে NRT এর মাধ্যমে ডেটা ইনডেক্স করার পরে এটি সার্চ রেজাল্টে খুব দ্রুত প্রদর্শিত হয়, যা রিয়েল-টাইম সার্চের মতোই কাজ করে।
NRT এর সুবিধা:
- Low Latency: সলর দ্রুত ইনডেক্সিং এবং সার্চ করতে সক্ষম হয়, যা NRT সার্চকে খুবই কার্যকরী করে তোলে।
- Fresh Data: নতুন ডেটা ইনডেক্স করার পর দ্রুত সার্চ রেজাল্ট পাওয়া যায়, যা ডেটার ফ্রেশনেস বজায় রাখে।
- Efficient Updates: ইনডেক্সিং এবং ডেটার আপডেটের জন্য খুব কম বিলম্ব হয়, ফলে দ্রুত সার্চ ফলাফল পাওয়া যায়।
How NRT Works in Solr
সলরের Near Real-Time Search (NRT) সিস্টেমটি এমনভাবে কাজ করে যে, যখন কোনো ডেটা ইনডেক্স করা হয়, সেটি খুব দ্রুত সার্চ রেজাল্টে উপলব্ধ হয়ে যায়। সলর commit এবং soft commit ব্যবহার করে এই কাজটি সম্পন্ন করে।
1. Commit vs Soft Commit
- Commit: যখন আপনি সলরে commit করেন, তখন সলর ডেটাকে ইনডেক্সে স্থায়ীভাবে যোগ করে এবং সমস্ত পরিবর্তন সলর সার্চ কোরে যোগ করা হয়। এটি কিছু বিলম্ব সৃষ্টি করতে পারে, তবে ইনডেক্সে স্থায়ীভাবে ডেটা যোগ হয়।
- Soft Commit: Soft commit দ্রুত ডেটা সার্চ রেজাল্টে যুক্ত করে, তবে এটি ইনডেক্সে স্থায়ীভাবে পরিবর্তন করার কাজটি পরবর্তী commit এ করে। এটি দ্রুত, কিন্তু ডেটা কিছু সময়ের জন্য অস্থায়ী থাকতে পারে।
2. NRT Search Process in Solr
সলরে Near Real-Time Search এর কাজ প্রক্রিয়া নিম্নরূপ:
- Data Ingestion: নতুন ডেটা ইনডেক্স করা হয় (যেমন একটি ডকুমেন্ট বা আপডেট)।
- Soft Commit: Soft Commit ব্যবহার করে ডেটা দ্রুত সার্চ রেজাল্টে যুক্ত হয়।
- Commit: কিছু সময় পর commit করার মাধ্যমে ডেটা স্থায়ীভাবে ইনডেক্সে যোগ হয় এবং সার্চ কোরে সঠিকভাবে প্রক্রিয়া করা হয়।
NRT Search কনফিগার করার ধাপ
1. Solr Configuration: commitWithin এবং softCommit
সলরে Near Real-Time Search সক্ষম করার জন্য আপনাকে commitWithin এবং softCommit অপশনগুলি সঠিকভাবে কনফিগার করতে হবে। এই অপশনগুলি কনফিগার করার মাধ্যমে ইনডেক্সিং এবং সার্চে কম বিলম্ব পাওয়া যাবে।
commitWithin Parameter
commitWithin প্যারামিটারটি ইন্ডিকেট করে কত মাইক্রো সেকেন্ডের মধ্যে ডেটা সলরে commit হবে। এটি softCommit এর জন্য ব্যবহৃত হয়।
Example:
<add>
<doc>
<field name="id">1</field>
<field name="title">Solr NRT Search Example</field>
<field name="content">This is a Solr Near Real-Time search example</field>
</doc>
<commitWithin>1000</commitWithin> <!-- Commit within 1 second -->
</add>
এখানে, commitWithin প্যারামিটারটি 1000 মাইক্রো সেকেন্ড (1 সেকেন্ড) দিয়ে কনফিগার করা হয়েছে, যার মাধ্যমে দ্রুত ডেটা সার্চে পাওয়া যাবে।
softCommit Parameter
softCommit প্যারামিটারটি ইনডেক্সে দ্রুত ডেটা যোগ করার জন্য ব্যবহার করা হয়, তবে এটি স্থায়ী commit করে না। এটি একটি দ্রুত commit অপশন যা ডেটাকে সার্চ রেজাল্টে শীঘ্রই উপলব্ধ করে।
Example:
<updateRequestProcessorChain name="default">
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.UpdateRequestProcessorFactory">
<str name="softCommit">true</str> <!-- Enable soft commit -->
</processor>
</updateRequestProcessorChain>
2. Solr Configurations for NRT Search
সলরের solrconfig.xml ফাইলে কিছু কনফিগারেশন করতে হয় যাতে NRT সার্চ সিস্টেম সক্রিয় হয়।
commitWithin and softCommit Configuration in solrconfig.xml
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="commitWithin">1000</str> <!-- Default commit within 1 second -->
<str name="softCommit">true</str> <!-- Enable soft commit -->
</lst>
</requestHandler>
এখানে:
- commitWithin: 1 সেকেন্ডের মধ্যে commit করার জন্য কনফিগার করা হয়েছে।
- softCommit: সলরের মাধ্যমে ডেটা দ্রুত সার্চ রেজাল্টে যুক্ত করার জন্য softCommit সক্রিয় করা হয়েছে।
3. Perform NRT Search
এখন যে সময় আপনি সলরে নতুন ডেটা ইনডেক্স করবেন, সেটি খুব দ্রুত সার্চ রেজাল্টে উপলব্ধ হবে। নীচে একটি উদাহরণ দেওয়া হল কিভাবে Solr NRT সার্চের জন্য কুয়েরি করা যায়:
Performing NRT Search Example
http://localhost:8983/solr/my_core/select?q=title:Solr&rows=10&wt=json
এখানে:
- q=title:Solr: সার্চ কুয়েরি যা "title" ফিল্ডে "Solr" শব্দটি অনুসন্ধান করবে।
- rows=10: সার্চ রেজাল্টে 10টি রেকর্ড রিটার্ন হবে।
- wt=json: JSON ফরম্যাটে রেসপন্স ফিরিয়ে দেবে।
4. Real-Time Search in SolrCloud
সলর ক্লাউডের মাধ্যমে আপনি Near Real-Time Search সক্রিয় করতে পারেন। সলর ক্লাউডের ক্ষেত্রে Zookeeper ব্যবহার করে সার্ভারগুলোকে সিঙ্ক্রোনাইজ করা হয় এবং ডেটা দ্রুত সার্চ কোরে উপলব্ধ হয়ে যায়।
SolrCloud Configuration for NRT Search
সলর ক্লাউডে NRT Search পরিচালনা করার জন্য Zookeeper এবং SolrCloud কনফিগারেশন নিশ্চিত করতে হবে। ক্লাস্টার ফর্মেশন এবং ডিস্ট্রিবিউটেড সার্চ সিস্টেমের জন্য SolrCloud অত্যন্ত উপযোগী।
Benefits of NRT Search
- Low Latency: ইনডেক্স করার পরে ডেটা দ্রুত সার্চে আসে, যা কম বিলম্বিত ফলাফল প্রদান করে।
- Real-Time Data Availability: নতুন ডেটা দ্রুত সার্চ রেজাল্টে উপলব্ধ হয়, যা দ্রুত ডেটার ভিত্তিতে সিদ্ধান্ত নিতে সহায়তা করে।
- Efficient for Large Datasets: NRT সার্চ ব্যবহার করে বড় ডেটাসেটেও কার্যকরীভাবে সার্চ করা যায়।
- Better User Experience: ব্যবহারকারীরা নতুন এবং ফ্রেশ ডেটা খুব দ্রুত দেখতে পায়, যা সার্চ অভিজ্ঞতাকে উন্নত করে।
Conclusion
Near Real-Time Search (NRT) সলরের একটি শক্তিশালী ফিচার যা ডেটা দ্রুত ইনডেক্স এবং সার্চ করতে সক্ষম করে। commitWithin এবং softCommit প্যারামিটার ব্যবহার করে আপনি সলরে NRT সক্ষম করতে পারেন এবং ডেটাকে খুব দ্রুত সার্চ রেজাল্টে উপলব্ধ করতে পারেন। এটি বিশেষভাবে সেই সিস্টেমগুলোর জন্য উপকারী যেখানে নতুন ডেটা নিয়মিতভাবে যোগ করা হয় এবং সেই ডেটাকে দ্রুত সার্চ করা প্রয়োজন। SolrCloud এবং Zookeeper এর মাধ্যমে ডিস্ট্রিবিউটেড সার্চ সিস্টেমে NRT আরো কার্যকরীভাবে কাজ করতে সক্ষম।
Read more