অ্যাপাচি সলর (Apache Solr) একটি শক্তিশালী সার্চ প্ল্যাটফর্ম যা Apache Lucene এর উপর ভিত্তি করে তৈরি। সলর এর সাথে কাজ করার জন্য আপনাকে বিভিন্ন Solr APIs ব্যবহার করতে হবে। সলরের API সমূহ ডেটা ইনডেক্সিং, সার্চ কুয়েরি, ডেটা আপডেট এবং অন্যান্য কার্যক্রম করতে সহায়তা করে। এটি RESTful API ভিত্তিক, যার মাধ্যমে HTTP রিকোয়েস্টের মাধ্যমে সলরের সঙ্গে যোগাযোগ করা যায়।
এই টিউটোরিয়ালে, আমরা Solr API এর মূল দিকগুলো এবং সেগুলি কীভাবে ব্যবহৃত হয় তা আলোচনা করব। এর মাধ্যমে সলরের ডেটা পরিচালনা, ইনডেক্সিং, সার্চ এবং অন্যান্য কার্যক্রম সম্পাদন করা সম্ভব হয়।
Solr API Overview
সলরের API বেশিরভাগ HTTP রিকোয়েস্টের মাধ্যমে কাজ করে, এবং এর মাধ্যমে সলরের বিভিন্ন কার্যক্রম পরিচালনা করা সম্ভব হয়। সলরের API মূলত তিনটি প্রধান ক্যাটেগরিতে ভাগ করা যায়:
- Search API: সার্চ কুয়েরি এবং ডেটা অনুসন্ধান।
- Indexing API: ডেটা ইনডেক্সিং এবং ডেটা আপডেট।
- Admin API: সলর কোর কনফিগারেশন, রিপ্লিকেশন, ব্যাকআপ ইত্যাদি পরিচালনা।
1. Search API (সার্চ কুয়েরি)
Search API সলরের মধ্যে ডেটা অনুসন্ধানের জন্য ব্যবহৃত হয়। এটি কুয়েরি পাঠিয়ে সলরের ইনডেক্স থেকে ডেটা খুঁজে পেতে সহায়তা করে। সাধারণভাবে GET রিকোয়েস্টের মাধ্যমে সার্চ কুয়েরি পাঠানো হয়।
Search API Example:
http://localhost:8983/solr/your_core/select?q=apple&wt=json
এখানে:
- q=apple: সার্চ কুয়েরি যা apple শব্দটি অনুসন্ধান করবে।
- wt=json: এটি JSON ফরম্যাটে রেসপন্স প্রদানের নির্দেশ দেয়।
Search API Parameters:
- q: সার্চ কুয়েরি (অথবা কোয়েরি স্ট্রিং)।
- rows: সার্চ রেজাল্টের সংখ্যা।
- start: সার্চ রেজাল্টের শুরু পয়েন্ট (paging)।
- fl: যেসব ফিল্ডের ডেটা প্রয়োজন তা নির্দিষ্ট করা (যেমন, fl=title,author)।
- fq: ফিল্টার কুয়েরি, যা সার্চ রেজাল্ট ফিল্টার করতে ব্যবহৃত হয়।
Example: Filter Query with Search API:
http://localhost:8983/solr/your_core/select?q=apple&fq=category:fruit&rows=10
এখানে:
- fq=category:fruit: কেবলমাত্র "fruit" ক্যাটেগরির মধ্যে apple শব্দটি অনুসন্ধান করবে।
2. Indexing API (ডেটা ইনডেক্সিং)
Indexing API সলরের ইনডেক্সে ডেটা যোগ বা আপডেট করার জন্য ব্যবহৃত হয়। এটি POST রিকোয়েস্টের মাধ্যমে ডেটা ইনডেক্স করে। ইনডেক্সিং API JSON, XML বা CSV ফরম্যাটে ডেটা গ্রহণ করতে পারে।
Indexing API Example:
http://localhost:8983/solr/your_core/update?commit=true
এখানে, আপনি POST রিকোয়েস্ট পাঠিয়ে ইনডেক্সিং ডেটা যোগ করতে পারেন:
[
{
"id": "1",
"title": "Apple",
"category": "fruit"
},
{
"id": "2",
"title": "Orange",
"category": "fruit"
}
]
Indexing API Parameters:
- commit=true: এটি ইনডেক্সিং সম্পন্ন হওয়ার পরে ডেটার পরিবর্তনগুলি কমিট করতে নির্দেশ দেয়।
- overwrite=true: পূর্ববর্তী ডেটা নতুন ডেটা দ্বারা ওভাররাইট করা হবে।
- json: ডেটা JSON ফরম্যাটে পাঠানোর জন্য ব্যবহৃত হয়।
Indexing API Example with CSV:
curl -X POST -H "Content-Type: application/xml" --data-binary @file.xml http://localhost:8983/solr/your_core/update?commit=true
এখানে file.xml সলর ইনডেক্সের জন্য XML ফাইল যা ডেটা ধারণ করে।
3. Admin API (এডমিন কনফিগারেশন)
Admin API সলরের প্রশাসনিক কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়, যেমন কোর কনফিগারেশন, ব্যাকআপ, রিপ্লিকেশন, ইত্যাদি।
Admin API Example:
Create Core: সলরে একটি নতুন কোর তৈরি করতে POST রিকোয়েস্ট ব্যবহার করা হয়:
curl http://localhost:8983/solr/admin/cores?action=CREATE&name=new_core&instanceDir=/path/to/solrCheck Solr Status: সলরের স্ট্যাটাস চেক করতে:
curl http://localhost:8983/solr/admin/info/systemReplicate Data: মাস্টার সলর সার্ভার থেকে স্লেভ সলর সার্ভারে ডেটা রিপ্লিকেট করতে:
curl http://localhost:8983/solr/your_core/replication?command=fullimportBack Up Core: সলর কোরের ব্যাকআপ নিতে:
curl http://localhost:8983/solr/your_core/backup?wt=json&name=backup_name&location=/path/to/backup
Admin API Parameters:
- action: নির্দিষ্ট অ্যাকশন যেমন CREATE, RELOAD, BACKUP ইত্যাদি।
- name: কোরের নাম।
- location: ব্যাকআপ ফাইলের সংরক্ষণের স্থান।
4. Data Import API (ডেটা ইম্পোর্ট)
Data Import API সলরে একটি ডেটা সোর্স থেকে ডেটা ইম্পোর্ট করতে ব্যবহৃত হয়। সাধারণত এটি JDBC, XML, CSV অথবা অন্যান্য ফরম্যাটের মাধ্যমে ডেটা সলরের ইনডেক্সে নিয়ে আসে।
Data Import API Example:
http://localhost:8983/solr/your_core/dataimport?command=full-import
এখানে:
- command=full-import: পুরো ডেটাসেট ইম্পোর্ট করবে।
5. Solr Query API for Aggregation and Faceting
সলরের Query API ব্যবহার করে আপনি ডেটা গ্রুপিং এবং ফেসেটিং করতে পারেন, যা বড় ডেটাসেটে ফলাফল বিশ্লেষণ এবং উপস্থাপন করতে সহায়তা করে। এই ফিচারটি facet এবং aggregation অপারেটরের মাধ্যমে সম্ভব।
Faceting Example:
http://localhost:8983/solr/your_core/select?q=apple&facet=true&facet.field=category
এখানে:
- facet=true: ফেসেটিং সক্ষম করবে।
- facet.field=category: category ফিল্ডের ভিত্তিতে গ্রুপিং হবে।
Solr API Error Handling
সলরের API রিকোয়েস্টের মাধ্যমে অনেক ধরনের ত্রুটি (error) হতে পারে, এবং এগুলির জন্য সলর বিভিন্ন ধরনের status codes প্রদান করে। কিছু সাধারণ HTTP Status Codes যা সলর API রেসপন্সে পাওয়া যেতে পারে:
- 200 OK: রিকোয়েস্ট সফলভাবে সম্পন্ন হয়েছে।
- 400 Bad Request: রিকোয়েস্টে ত্রুটি রয়েছে।
- 404 Not Found: সলর কোর বা রিকোয়েস্টের URL পাওয়া যায়নি।
- 500 Internal Server Error: সলর সার্ভারে কোনো ত্রুটি হয়েছে।
এগুলি সঠিকভাবে হ্যান্ডেল করে আপনি সার্ভারের অবস্থা এবং রিকোয়েস্টের ফলাফল বুঝতে পারেন।
সারাংশ
Solr API সলরের সাথে বিভিন্ন কার্যক্রম সম্পাদন করার জন্য একটি অত্যন্ত কার্যকরী উপায়। Search API, Indexing API, Admin API, এবং Data Import API সহ সলরের বিভিন্ন API আপনাকে সার্চ কুয়েরি পরিচালনা, ডেটা ইনডেক্সিং, কোর কনফিগারেশন এবং ডেটা আপডেট করতে সহায়তা করে। সলরের faceting এবং aggregation ফিচারটি বড় ডেটাসেটের বিশ্লেষণ এবং উপস্থাপনা সহজ করে তোলে। API গুলি ব্যবহারের মাধ্যমে আপনি সলরের কার্যক্ষমতা এবং দক্ষতা সহজেই বৃদ্ধি করতে পারেন।
Read more