Full-Text Search হল একটি শক্তিশালী অনুসন্ধান প্রযুক্তি যা SQL Server এর মাধ্যমে ডেটাবেসে সংরক্ষিত টেক্সট ডেটার মধ্যে আরও উন্নত এবং নির্ভুল অনুসন্ধান প্রদান করে। এটি সাধারণ LIKE অপারেটরের চেয়ে অনেক বেশি কার্যকরী, বিশেষ করে যখন ডেটাবেসে বড় বা জটিল টেক্সট ডেটা থাকে এবং সেখানে নির্দিষ্ট শব্দ বা বাক্যাংশ খোঁজা হয়।
Full-Text Search এর ধারণা
Full-Text Search মূলত নির্দিষ্ট টেক্সট ডেটার মধ্যে শব্দ অনুসন্ধান করতে ব্যবহৃত হয়। এটি stemming, inflectional variants, এবং stopwords এর মতো ফিচার ব্যবহার করে আরও উন্নত এবং দ্রুত অনুসন্ধান সম্ভব করে।
কীভাবে কাজ করে Full-Text Search?
- Tokenization: Full-Text Search প্রথমে ডেটাবেসের টেক্সট ডেটাকে tokens বা ছোট অংশে ভেঙে ফেলে। একটি টোকেন সাধারণত একটি শব্দ বা শব্দের অংশ হতে পারে (যেমন "running" এবং "run" দুটি আলাদা টোকেন হিসেবে গণ্য হতে পারে)।
- Stemming: শব্দের বাচ্য রূপে পরিবর্তন (stem) করা হয়, যেমন "running" কে "run" এ রূপান্তরিত করা।
- Stopwords Removal: সাধারণ শব্দগুলি (যেমন "the", "is", "and") সাধারণত অনুসন্ধান প্রক্রিয়া থেকে বাদ দেওয়া হয়, কারণ এগুলির সাথে সাধারণত খুব বেশি গুরুত্বপূর্ণ তথ্য থাকে না।
- Indexing: SQL Server Full-Text Index তৈরি করে, যাতে অনুসন্ধান করার জন্য ডেটা দ্রুত প্রাপ্ত হতে পারে।
- Search Query: Full-Text Search কোয়েরি যেমন
CONTAINSবাFREETEXTব্যবহার করে টেক্সটের মধ্যে নির্দিষ্ট শব্দ, বাক্যাংশ, বা প্যাটার্ন অনুসন্ধান করা হয়।
Full-Text Search এর প্রয়োজনীয়তা
SQL Server-এ Full-Text Search ব্যবহারের কিছু বিশেষ সুবিধা এবং প্রয়োজনীয়তা রয়েছে, যেগুলি সাধারণ SQL অনুসন্ধান পদ্ধতির তুলনায় অনেক বেশি কার্যকরী:
1. বিশাল টেক্সট ডেটার মধ্যে দ্রুত অনুসন্ধান:
- যখন আপনার ডেটাবেসে হাজার হাজার শব্দ বা বাক্যাংশ থাকে, তখন LIKE অপারেটরের মাধ্যমে অনুসন্ধান অনেক সময় স্লো হয়ে যেতে পারে। Full-Text Search এই পরিস্থিতিতে অনেক দ্রুত এবং কার্যকরী অনুসন্ধান সরবরাহ করে।
2. Advanced Search Capabilities:
- Full-Text Search শব্দের stemming, wildcards, এবং proximity searching সমর্থন করে, যা সাধারণ SQL কুয়েরি দ্বারা সম্ভব নয়।
- উদাহরণস্বরূপ, "run" এবং "running" এর মতো বিভিন্ন রূপ একই ফলাফল দেবে, যা সাধারণ অনুসন্ধান পদ্ধতিতে পাওয়া সম্ভব নয়।
3. Phrase Search:
- Full-Text Search আপনাকে exact phrase matching করতে সহায়তা করে। যেমন, আপনি একটি নির্দিষ্ট বাক্যাংশের মধ্যে অনুসন্ধান করতে পারবেন, যেমন
"running shoes"। SQL এর সাধারণLIKEস্টেটমেন্ট এর মাধ্যমে এমন প্যাটার্ন খোঁজা সম্ভব নয়।
4. Boolean Logic:
- Full-Text Search Boolean অপারেটর যেমন
AND,OR,NOTসহ কাজ করে, যা অনুসন্ধান কোয়েরিকে আরও উন্নত এবং নির্দিষ্ট করে তোলে। - উদাহরণ:
"shoes AND running"– এতে আপনি এমন রেকর্ড পাবেন যেখানে দুটি শব্দই উপস্থিত।
5. Ranking Search Results:
- Full-Text Search
WEIGHTবাRANKফিচার সমর্থন করে, যার মাধ্যমে আপনি টেক্সটের প্রতি রেকর্ডের গুরুত্ব বা র্যাংক নির্ধারণ করতে পারেন। - উদাহরণস্বরূপ, "running" শব্দটি যদি অনেক বেশি বার প্রদর্শিত হয়, তাহলে সেটি আরো উচ্চ র্যাংক পাবে।
6. Multilingual Support:
- Full-Text Search বিভিন্ন ভাষার শব্দ এবং গঠন সমর্থন করে, যা Unicode এবং অন্যান্য ভাষার টেক্সট ডেটা অনুসন্ধানে সক্ষম করে।
7. Indexed Search:
- Full-Text Search একটি Full-Text Index তৈরি করে, যা ডেটাবেসে টেক্সট অনুসন্ধান দ্রুত করে তোলে। এই ইনডেক্স টেবিলের বড় ডেটা সেটেও দ্রুত ফলাফল প্রদান করে।
Full-Text Search এর ব্যবহার উদাহরণ
1. Full-Text Index তৈরি করা:
প্রথমে Full-Text Index তৈরি করতে হয়। টেবিলের নির্দিষ্ট কলামে Full-Text Index তৈরি করা যাবে, যাতে সেই কলামের টেক্সট ডেটা দ্রুত অনুসন্ধানযোগ্য হয়।
-- Full-Text Index তৈরি করা
CREATE FULLTEXT INDEX ON Products (ProductDescription)
KEY INDEX PK_Products;
এখানে:
- Products টেবিলের ProductDescription কলামে Full-Text Index তৈরি করা হচ্ছে।
- KEY INDEX: Full-Text Index তৈরির জন্য একটি PRIMARY KEY ইনডেক্স থাকতে হবে।
2. CONTAINS কোয়েরি ব্যবহার:
CONTAINS ফাংশন ব্যবহার করে Full-Text Search করা হয়। এটি একটি নির্দিষ্ট শব্দ বা বাক্যাংশ খোঁজে।
-- Full-Text Search using CONTAINS
SELECT ProductName
FROM Products
WHERE CONTAINS(ProductDescription, 'running');
এখানে, running শব্দটি ProductDescription কলামে খুঁজে দেখা হবে। এটি Full-Text Index এর মাধ্যমে দ্রুতভাবে কাজ করবে।
3. FREETEXT কোয়েরি ব্যবহার:
FREETEXT ফাংশন সাধারণত একটি প্রাকৃতিক ভাষার অনুসন্ধান পরিচালনা করে, যা শব্দের বিভিন্ন রূপ (stemming) এবং প্রাসঙ্গিকতার ভিত্তিতে ফলাফল প্রদান করে।
-- Full-Text Search using FREETEXT
SELECT ProductName
FROM Products
WHERE FREETEXT(ProductDescription, 'sports equipment');
এখানে, sports equipment এর প্রাসঙ্গিক ফলাফলগুলো পাওয়া যাবে, যেমন "sports", "equipment" শব্দগুলোর বিভিন্ন রূপ।
4. Boolean Search ব্যবহার:
Full-Text Search Boolean অপারেটর সমর্থন করে, যেমন AND, OR, NOT।
-- Boolean search using Full-Text Search
SELECT ProductName
FROM Products
WHERE CONTAINS(ProductDescription, 'running AND shoes');
এটি ProductDescription কলামে "running" এবং "shoes" দুটি শব্দের সাথেই উপস্থিত রেকর্ডগুলো রিটার্ন করবে।
সারাংশ
- Full-Text Search একটি উন্নত অনুসন্ধান পদ্ধতি, যা ডেটাবেসে টেক্সট ডেটার মধ্যে নির্দিষ্ট শব্দ বা বাক্যাংশ খুঁজে বের করতে ব্যবহৃত হয়।
- এটি সাধারণ LIKE অপারেটরের তুলনায় অনেক দ্রুত, কার্যকরী এবং উন্নত ফিচার প্রদান করে, যেমন stemming, stopwords removal, Boolean logic, exact phrase search, এবং ranking।
- Full-Text Index তৈরি করে, SQL Server টেবিলের টেক্সট ডেটাকে দ্রুত অনুসন্ধানযোগ্য করে তোলে, যা বড় ডেটাসেটের জন্য অপরিহার্য।
Read more