Full-Text Search SQL Server-এ একটি শক্তিশালী বৈশিষ্ট্য যা টেক্সট ডেটাতে দ্রুত এবং জটিল অনুসন্ধান (searching) করতে সাহায্য করে। এটি সাধারণ LIKE কন্ডিশনের তুলনায় অনেক বেশি কার্যকরী, বিশেষ করে যখন বড় টেক্সট ডেটাবেসের মধ্যে শব্দ বা প্যাটার্ন অনুসন্ধান করতে হয়।
Full-Text Search সাধারণত nvarchar, varchar, text অথবা varchar(max) ধরনের কলামে ব্যবহৃত হয়। এটি বিশেষভাবে কাজ করে যখন আপনি একটি নির্দিষ্ট শব্দ বা শব্দসমষ্টি সন্ধান করতে চান, যেগুলি সাধারণ SQL কুয়েরির মাধ্যমে খুঁজে পাওয়া কঠিন।
Full-Text Index Creation
Full-Text Index তৈরি করা হয় যাতে টেক্সট ডেটাবেসের মধ্যে নির্দিষ্ট শব্দ বা বাক্যাংশের সন্ধান দ্রুত করা যায়। প্রথমে, একটি Full-Text Index তৈরি করতে হবে।
১. Full-Text Index তৈরির জন্য প্রয়োজনীয় স্টেপ:
- Full-Text Catalog তৈরি করতে হবে।
- Full-Text Index তৈরি করতে হবে, যা টেবিলের টেক্সট কলামগুলোকে ইনডেক্স করবে।
Full-Text Catalog তৈরি:
CREATE FULLTEXT CATALOG MyCatalog AS DEFAULT;
এটি একটি Full-Text Catalog তৈরি করবে এবং সেটিকে DEFAULT হিসাবে সেট করবে।
Full-Text Index তৈরি:
CREATE FULLTEXT INDEX ON MyTable (MyColumn)
KEY INDEX PK_MyTable
ON MyCatalog;
এখানে:
- MyTable: টেবিলের নাম, যার উপর ইনডেক্স তৈরি হবে।
- MyColumn: টেবিলের সেই কলামের নাম, যেটিতে টেক্সট সার্চ করা হবে।
- PK_MyTable: এই টেবিলের Primary Key ইনডেক্স, যা Full-Text Index এর জন্য প্রয়োজন।
- MyCatalog: যেটি আগেই তৈরি করা Full-Text Catalog।
Full-Text Search Query Examples
এখন যে Full-Text Index তৈরি করা হয়েছে, সেটির উপর অনুসন্ধান করা যায়। SQL Server Full-Text Search ব্যবহার করে সহজেই শব্দ বা বাক্যাংশ অনুসন্ধান করা যায়।
১. CONTAINS – নির্দিষ্ট শব্দের সন্ধান করা
CONTAINS ফাংশনটি একটি নির্দিষ্ট শব্দ বা শব্দসমষ্টি টেক্সট কলামে খুঁজে বের করতে ব্যবহৃত হয়।
SELECT * FROM MyTable
WHERE CONTAINS(MyColumn, 'apple');
এটি MyTable টেবিলের MyColumn কলামে apple শব্দটি খুঁজে বের করবে।
২. FREETEXT – সমস্ত সম্পর্কিত শব্দের সন্ধান
FREETEXT ফাংশনটি কিছু নির্দিষ্ট শব্দের পরিবর্তে সম্পর্কিত শব্দও খুঁজে বের করে। এটি কোনো বিশেষ শব্দের মূল ধারণা অনুসন্ধান করতে ব্যবহৃত হয়।
SELECT * FROM MyTable
WHERE FREETEXT(MyColumn, 'fruit');
এটি MyColumn কলামে fruit শব্দটির সাথে সম্পর্কিত সমস্ত শব্দ (যেমন, apples, bananas, fruits) খুঁজে বের করবে।
৩. CONTAINSTABLE – Full-Text Search সহ টেবিলের সারি রেটিং সহ ফেরত আনা
CONTAINSTABLE ফাংশনটি টেবিলের সারণীতে Full-Text Index অনুসন্ধান করার জন্য ব্যবহৃত হয় এবং রেটিং সহ ফলাফল প্রদান করে।
SELECT * FROM MyTable
WHERE CONTAINSTABLE(MyTable, MyColumn, 'apple') > 0;
এটি apple শব্দের সাথে সম্পর্কিত সারিগুলি MyTable টেবিল থেকে রেটিং সহ ফেরত আনবে।
৪. NEAR – কাছাকাছি শব্দের সন্ধান
NEAR অপারেটরটি দুটি শব্দের মধ্যে একটি নির্দিষ্ট দূরত্বের মধ্যে শব্দগুলি খুঁজে বের করতে ব্যবহৃত হয়।
SELECT * FROM MyTable
WHERE CONTAINS(MyColumn, '"apple" NEAR "banana"');
এটি apple এবং banana শব্দগুলির মধ্যে যেকোনো কাছাকাছি সম্পর্কিত শব্দের সন্ধান করবে।
৫. PREFIX SEARCH – শব্দের অংশ অনুসন্ধান
Prefix Search বা শব্দের অংশ অনুসন্ধান করতে CONTAINS ফাংশন ব্যবহার করা হয়। এটি বিশেষভাবে দরকারী যখন আপনি শব্দের শুরু থেকে অনুসন্ধান করতে চান।
SELECT * FROM MyTable
WHERE CONTAINS(MyColumn, 'FORMSOF(INFLECTIONAL, "run")');
এটি run এর সমস্ত রূপ খুঁজে বের করবে (যেমন, running, runs, runner)।
Performance Tips for Full-Text Search
- Full-Text Indexing Maintenance:
- ইনডেক্সের কার্যকারিতা বজায় রাখতে নিয়মিত index rebuild বা index defragmentation করতে হবে। এটি ডেটাবেসের কার্যক্ষমতা উন্নত করতে সাহায্য করে।
- Use of Stopwords:
- কিছু সাধারণ শব্দ (যেমন, a, and, the) Full-Text Index এর মাধ্যমে অগ্রাহ্য করা হয়, যেগুলি Stopwords নামে পরিচিত। আপনি যদি এই শব্দগুলিকে অনুসন্ধানে অন্তর্ভুক্ত করতে চান, তবে অবশ্যই Stoplist কনফিগারেশন পরিবর্তন করতে হবে।
- Use of
CONTAINSvsFREETEXT:- CONTAINS ব্যবহার করলে আপনি নির্দিষ্ট শব্দ বা শব্দসমষ্টি খুঁজে বের করতে পারেন, যা স্পেসিফিক সার্চের জন্য উপযুক্ত। তবে, FREETEXT ব্যবহার করলে এটি শব্দের বিভিন্ন রূপ এবং তাদের সংক্ষিপ্ত অর্থ অনুসন্ধান করতে সক্ষম।
Conclusion
SQL Server-এর Full-Text Search একটি শক্তিশালী টুল যা বড় ডেটাবেসে শব্দ বা বাক্যাংশ অনুসন্ধান করার জন্য ব্যবহৃত হয়। এটি একটি দ্রুত এবং কার্যকরী পদ্ধতি, যা সাধারণ LIKE অপারেটরের তুলনায় বেশি কার্যকরী, বিশেষত যখন বড় টেক্সট ডেটার মধ্যে অনুসন্ধান করতে হয়। Full-Text Index তৈরি করার মাধ্যমে ডেটাবেসের টেক্সট-ভিত্তিক অনুসন্ধান আরও দ্রুত এবং কার্যকর করা যায়।
Read more