Full-Text Search T-SQL এ

Database Tutorials - টি-এসকিউএল (T-SQL)
311

Full-Text Search (FTS) একটি শক্তিশালী ফিচার যা SQL Server-এ টেক্সট ডেটার মধ্যে দ্রুত অনুসন্ধান করতে ব্যবহৃত হয়। এটি সাধারণ LIKE কুয়েরি বা WHERE ক্লজের তুলনায় অনেক দ্রুত এবং কার্যকরী হয়, বিশেষ করে বড় টেক্সট ডেটা (যেমন নথি, বই, বা লম্বা টেক্সট ফিল্ড) খুঁজে বের করার ক্ষেত্রে।

Full-Text Search T-SQL এর মাধ্যমে আপনি শব্দ (word) বা শব্দের অংশ (part of the word) অনুসন্ধান করতে পারেন এবং এটি stemming, synonyms, proximity search সহ আরো অনেক ফিচার সমর্থন করে।

Full-Text Search-এর প্রধান উপাদান

  1. Full-Text Index: এটি একটি বিশেষ ধরনের ইনডেক্স যা টেক্সট ডেটার মধ্যে দ্রুত অনুসন্ধান করতে সাহায্য করে। এটি মূলত টেবিলের CHAR, VARCHAR, TEXT কলামে সংরক্ষিত ডেটা উপর কাজ করে।
  2. Full-Text Catalog: এটি Full-Text Indexes সংরক্ষণের জন্য একটি অবজেক্ট। এটি ডেটাবেসের একটি অংশ, যা একাধিক টেবিল বা কলামের ইনডেক্স রাখতে পারে।
  3. Full-Text Query: এটি একটি কুয়েরি যা Full-Text Index ব্যবহার করে টেবিলের টেক্সট ডেটাতে অনুসন্ধান চালায়।

Full-Text Search সক্ষম করা

Full-Text Search ব্যবহারের জন্য, SQL Server-এ Full-Text Index এবং Full-Text Catalog তৈরি করতে হয়।

1. Full-Text Index তৈরি করা

প্রথমে, Full-Text Index তৈরি করার জন্য আপনাকে টেবিল এবং কলামের উপর Full-Text Index তৈরি করতে হবে।

-- Full-Text Catalog তৈরি করা
CREATE FULLTEXT CATALOG MyFullTextCatalog;

-- Full-Text Index তৈরি করা
CREATE FULLTEXT INDEX ON Products(ProductDescription)
KEY INDEX PK_Products -- Primary Key Index
ON MyFullTextCatalog;

এখানে:

  • CREATE FULLTEXT CATALOG: একটি Full-Text Catalog তৈরি করা হচ্ছে যা টেবিলের ইনডেক্স ধারণ করবে।
  • CREATE FULLTEXT INDEX: এটি Products টেবিলের ProductDescription কলামে Full-Text Index তৈরি করছে।

2. Full-Text Index উপলব্ধ করা

Full-Text Search সক্ষম করার জন্য প্রথমে Full-Text Index তৈরি করার পর, এটি পরিষ্কারভাবে তৈরি হয়ে যাবে। ইনডেক্স তৈরি হওয়ার পর, আপনি Full-Text Query ব্যবহার করতে পারবেন।


Full-Text Search কুয়েরি উদাহরণ

Full-Text Search কুয়েরির মাধ্যমে আপনি টেক্সট ডেটার মধ্যে দ্রুত এবং জটিল অনুসন্ধান করতে পারবেন। এখানে কিছু উদাহরণ দেওয়া হলো:

1. CONTAINS: একটি শব্দ বা শব্দের অংশ অনুসন্ধান

-- Full-Text Search ব্যবহার করে একটি নির্দিষ্ট শব্দ খোঁজা
SELECT ProductName, ProductDescription
FROM Products
WHERE CONTAINS(ProductDescription, 'laptop');

এখানে, CONTAINS ফাংশনটি ProductDescription কলামে laptop শব্দটি খুঁজবে। এটি শব্দের স্টেম এবং সাইনোনিমও সমর্থন করে, অর্থাৎ "laptop", "laptops", বা সম্পর্কিত শব্দগুলিও পাওয়া যাবে।

2. FREETEXT: একটি নির্দিষ্ট শব্দ বা ফ্রেজ অনুসন্ধান

-- FREETEXT ব্যবহার করে একটি শব্দ বা ফ্রেজ খোঁজা
SELECT ProductName, ProductDescription
FROM Products
WHERE FREETEXT(ProductDescription, 'high quality laptop');

এখানে, FREETEXT ফাংশনটি ProductDescription কলামে "high quality laptop" ফ্রেজটির সাথে মিল থাকা যেকোনো শব্দ বা টেক্সট খুঁজে বের করবে।

3. CONTAINS ব্যবহার করে শব্দের মধ্যে Wildcards:

-- Wildcards ব্যবহার করে একটি শব্দের অংশ অনুসন্ধান
SELECT ProductName, ProductDescription
FROM Products
WHERE CONTAINS(ProductDescription, '"lap*"');

এখানে, lap* দ্বারা যেকোনো শব্দ যা "lap" দিয়ে শুরু হয় (যেমন laptop, lapdesk, lapware) খুঁজে বের করবে।

4. Proximity Search (Near operator):

-- Proximity search: একে অপরের কাছাকাছি অবস্থানে থাকা শব্দ খোঁজা
SELECT ProductName, ProductDescription
FROM Products
WHERE CONTAINS(ProductDescription, '"laptop" NEAR "sale"');

এখানে, NEAR অপারেটরটি "laptop" এবং "sale" শব্দ দুটি একে অপরের কাছাকাছি অবস্থানে থাকা সারিগুলো খুঁজে বের করবে।


Full-Text Search এর অন্যান্য ফাংশন

  1. ISABOUT:

    • ISABOUT ফাংশনটি একটি ন্যাচারাল ল্যাঙ্গুয়েজ অনুসন্ধান (natural language search) প্রদান করে, যা ডেটার মধ্যে সম্পর্কিত বা তুলনামূলক শব্দ খুঁজে বের করে।
    SELECT ProductName, ProductDescription
    FROM Products
    WHERE ISABOUT(ProductDescription, 'laptop AND sale');
    
  2. STOPWORDS:
    • Full-Text Index সাধারণত কিছু স্টপওয়ার্ড (যেমন "the", "is", "and" ইত্যাদি) বাদ দিয়ে থাকে। এই শব্দগুলো সার্চে অন্তর্ভুক্ত হয় না।

Full-Text Search-এ ফিল্টার এবং কন্ডিশন

  • Phrase Searching: " এবং " (Double Quotes) ব্যবহার করে একাধিক শব্দের মধ্যে একটি সঠিক ফ্রেজ খুঁজে বের করা যায়।
  • Boolean Operators: AND, OR, NOT অপারেটর ব্যবহার করা যেতে পারে শব্দের সম্পর্কের ভিত্তিতে।
  • Wildcard Characters: * (asterisk) এবং ? (question mark) ব্যবহার করে শব্দের অংশ খোঁজা।

Full-Text Search এর সুবিধা ও অসুবিধা

সুবিধা:

  1. দ্রুত অনুসন্ধান: Full-Text Search নির্দিষ্ট শব্দ বা শব্দের অংশ দ্রুত খুঁজে বের করতে পারে।
  2. কাস্টমাইজেশন: শব্দের স্টেমিং, সাইনোনিমস এবং প্রোক্সিমিটি অনুসন্ধান ব্যবহারের মাধ্যমে ফলাফলকে কাস্টমাইজ করা যায়।
  3. পারফরম্যান্স: বড় টেক্সট ডেটাতে অনুসন্ধান করতে Full-Text Index অনেক দ্রুত।

অসুবিধা:

  1. ইনডেক্স তৈরি করা প্রক্রিয়া: ইনডেক্স তৈরি করতে কিছুটা সময় এবং সিস্টেম রিসোর্স প্রয়োজন হয়।
  2. স্টপওয়ার্ড: কিছু সাধারণ শব্দ (যেমন: 'is', 'and', 'the') সিস্টেম দ্বারা বাদ দেওয়া হয়, যেগুলি ব্যবহারকারী চাইলে পুনরায় কনফিগার করা যেতে পারে।

Conclusion

Full-Text Search SQL Server-এ টেক্সট ডেটার মধ্যে দ্রুত এবং কার্যকরী অনুসন্ধান করার একটি শক্তিশালী টুল। এটি CONTAINS, FREETEXT, এবং ISABOUT এর মতো ফাংশন ব্যবহার করে উন্নত অনুসন্ধান সুবিধা প্রদান করে। Full-Text Index তৈরি করার মাধ্যমে আপনি SQL Server-এ টেক্সট ডেটাতে পারফরম্যান্স বৃদ্ধি এবং দ্রুত অনুসন্ধান চালাতে পারবেন।

Content added By

Full-Text Search এর ধারণা এবং প্রয়োজনীয়তা

292

Full-Text Search হল একটি শক্তিশালী অনুসন্ধান প্রযুক্তি যা SQL Server এর মাধ্যমে ডেটাবেসে সংরক্ষিত টেক্সট ডেটার মধ্যে আরও উন্নত এবং নির্ভুল অনুসন্ধান প্রদান করে। এটি সাধারণ LIKE অপারেটরের চেয়ে অনেক বেশি কার্যকরী, বিশেষ করে যখন ডেটাবেসে বড় বা জটিল টেক্সট ডেটা থাকে এবং সেখানে নির্দিষ্ট শব্দ বা বাক্যাংশ খোঁজা হয়।


Full-Text Search এর ধারণা

Full-Text Search মূলত নির্দিষ্ট টেক্সট ডেটার মধ্যে শব্দ অনুসন্ধান করতে ব্যবহৃত হয়। এটি stemming, inflectional variants, এবং stopwords এর মতো ফিচার ব্যবহার করে আরও উন্নত এবং দ্রুত অনুসন্ধান সম্ভব করে।

কীভাবে কাজ করে Full-Text Search?

  1. Tokenization: Full-Text Search প্রথমে ডেটাবেসের টেক্সট ডেটাকে tokens বা ছোট অংশে ভেঙে ফেলে। একটি টোকেন সাধারণত একটি শব্দ বা শব্দের অংশ হতে পারে (যেমন "running" এবং "run" দুটি আলাদা টোকেন হিসেবে গণ্য হতে পারে)।
  2. Stemming: শব্দের বাচ্য রূপে পরিবর্তন (stem) করা হয়, যেমন "running" কে "run" এ রূপান্তরিত করা।
  3. Stopwords Removal: সাধারণ শব্দগুলি (যেমন "the", "is", "and") সাধারণত অনুসন্ধান প্রক্রিয়া থেকে বাদ দেওয়া হয়, কারণ এগুলির সাথে সাধারণত খুব বেশি গুরুত্বপূর্ণ তথ্য থাকে না।
  4. Indexing: SQL Server Full-Text Index তৈরি করে, যাতে অনুসন্ধান করার জন্য ডেটা দ্রুত প্রাপ্ত হতে পারে।
  5. 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 টেবিলের টেক্সট ডেটাকে দ্রুত অনুসন্ধানযোগ্য করে তোলে, যা বড় ডেটাসেটের জন্য অপরিহার্য।
Content added By

Full-Text Catalogs এবং Indexes তৈরি

317

Full-Text Catalogs এবং Full-Text Indexes SQL Server-এ ব্যবহৃত হয় যখন আপনি টেক্সট ডেটা অনুসন্ধান করতে চান, বিশেষত দীর্ঘ বা অ-স্ট্রাকচারড টেক্সট ডেটা যেমন নথি, বার্তা বা লম্বা কলামের মধ্যে। এগুলি সাধারণ SQL Indexes থেকে আলাদা, কারণ এগুলি ডেটাবেসের কলামে শব্দ বা শব্দগুচ্ছ অনুসন্ধান করার জন্য তৈরি করা হয়, যা টেক্সট ডেটার সাথে কাজ করা সহজ করে।

Full-Text Catalogs এবং Indexes কী?

  1. Full-Text Catalog:
    • এটি একটি সংকলন (collection) যা এক বা একাধিক Full-Text Indexes ধারণ করে। এটি পূর্ণ-প্রত্যাশিত টেক্সট অনুসন্ধান পরিচালনার জন্য তৈরি করা হয়। Full-Text Catalog একটি লজিক্যাল অবজেক্ট যা টেক্সট ডেটার জন্য ইনডেক্সিং প্রক্রিয়া পরিচালনা করে।
  2. Full-Text Index:
    • এটি একটি ইন্ডেক্স যা টেবিলের একটি বা একাধিক কলামে পূর্ণ-প্রত্যাশিত টেক্সট অনুসন্ধান সক্ষম করতে ব্যবহৃত হয়। এটি ডেটা টেবিলে শব্দ বা শব্দগুচ্ছের জন্য অনুসন্ধান দক্ষতা উন্নত করে।

Full-Text Catalog তৈরি করা

Full-Text Catalog তৈরি করতে প্রথমে আপনাকে একটি Catalog তৈরি করতে হবে, যা পরে টেবিলের কলামগুলির জন্য Full-Text Index ধারণ করবে।

সিনট্যাক্স:

CREATE FULLTEXT CATALOG catalog_name
    [ AS DEFAULT ]
    [ WITH ACCENT_SENSITIVITY = ON | OFF ]
    [ FOR { FILEGROUP filegroup_name | DEFAULT } ]
  • catalog_name: আপনার Full-Text Catalog এর নাম।
  • ACCENT_SENSITIVITY: এই অপশনটি চিহ্নিত করে যে, আপনি কি আক্ষরিক বা উচ্চারণ সংবেদনশীল অনুসন্ধান করতে চান কিনা।
  • FILEGROUP filegroup_name: এটি ঐচ্ছিক এবং নির্দিষ্ট ফাইলগ্রুপে Full-Text Catalog তৈরি করার জন্য ব্যবহৃত হয়।

উদাহরণ:

CREATE FULLTEXT CATALOG MyFullTextCatalog
WITH ACCENT_SENSITIVITY = OFF;

এটি MyFullTextCatalog নামক একটি Full-Text Catalog তৈরি করবে, যেখানে উচ্চারণ সংবেদনশীলতা অফ থাকবে।


Full-Text Index তৈরি করা

Full-Text Index তৈরি করতে, আপনি একটি টেবিলের জন্য এক বা একাধিক কলাম নির্বাচিত করবেন, যার মাধ্যমে পূর্ণ-প্রত্যাশিত অনুসন্ধান করা হবে। এই ইনডেক্সটি ঐ টেবিলের Full-Text Catalog এর মধ্যে রাখা হবে।

সিনট্যাক্স:

CREATE FULLTEXT INDEX ON table_name (column_name)
    KEY INDEX index_name
    ON catalog_name
    [WITH CHANGE_TRACKING { MANUAL | AUTOMATIC | OFF }]
  • table_name: আপনি যেই টেবিলের উপর Full-Text Index তৈরি করতে চান।
  • column_name: সেই কলামের নাম যেখানে Full-Text Index তৈরি হবে।
  • index_name: আপনার প্রাথমিক বা ইউনিক ইনডেক্সের নাম যা Full-Text Index এর জন্য প্রয়োজন।
  • catalog_name: আপনার তৈরি করা Full-Text Catalog এর নাম।
  • CHANGE_TRACKING: এটি সিদ্ধান্ত নেয় যে ইনডেক্সটি স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি আপডেট হবে।

উদাহরণ:

-- প্রথমে প্রাথমিক ইনডেক্স তৈরি করুন (যদি না থাকে)
CREATE UNIQUE INDEX PK_Employees
ON Employees(EmployeeID);

-- তারপর Full-Text Index তৈরি করুন
CREATE FULLTEXT INDEX ON Employees (FirstName, LastName)
KEY INDEX PK_Employees
ON MyFullTextCatalog;

এটি Employees টেবিলের FirstName এবং LastName কলামগুলির উপর Full-Text Index তৈরি করবে এবং এটি PK_Employees ইনডেক্স ব্যবহার করবে।


Full-Text Index আপডেট এবং ব্যবস্থাপনা

  1. Change Tracking: Full-Text Index গুলি স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি আপডেট হতে পারে। আপনি AUTOMATIC, MANUAL, অথবা OFF অপশন ব্যবহার করতে পারেন।
    • AUTOMATIC: ডেটাবেসে কোনো পরিবর্তন হলে, Full-Text Index স্বয়ংক্রিয়ভাবে আপডেট হয়।
    • MANUAL: আপডেটগুলি স্বয়ংক্রিয়ভাবে করা হবে না, আপনাকে এটি ম্যানুয়ালি করতে হবে।

উদাহরণ (Change Tracking):

CREATE FULLTEXT INDEX ON Employees (FirstName, LastName)
KEY INDEX PK_Employees
ON MyFullTextCatalog
WITH CHANGE_TRACKING AUTOMATIC;
  1. Full-Text Index Rebuild: Full-Text Index গুলি সময়ে সময়ে পুনর্নির্মাণ (rebuild) করতে হতে পারে, বিশেষত যদি অনেক পরিবর্তন হয়।

উদাহরণ:

ALTER FULLTEXT INDEX ON Employees REBUILD;

এটি Employees টেবিলের Full-Text Index পুনর্নির্মাণ করবে।


Full-Text Search ব্যবহার করা

একবার Full-Text Index তৈরি হলে, আপনি CONTAINS অথবা FREETEXT ফাংশন ব্যবহার করে দ্রুত এবং কার্যকরীভাবে ডেটা অনুসন্ধান করতে পারেন।

১. CONTAINS ফাংশন:

CONTAINS ফাংশন ব্যবহার করে আপনি নির্দিষ্ট শব্দ বা শব্দগুচ্ছের উপর অনুসন্ধান করতে পারেন।

SELECT * FROM Employees
WHERE CONTAINS(FirstName, 'John');

এটি FirstName কলামে 'John' শব্দের উপস্থিতি অনুসন্ধান করবে।

২. FREETEXT ফাংশন:

FREETEXT ফাংশন ব্যবহার করে আপনি একটি প্রাকৃতিক ভাষার অনুসন্ধান করতে পারেন।

SELECT * FROM Employees
WHERE FREETEXT(FirstName, 'John');

এটি FirstName কলামে 'John' এর সমার্থক শব্দগুলির জন্য অনুসন্ধান করবে।


Full-Text Index এর সুবিধা এবং অসুবিধা

সুবিধা:

  1. দ্রুত অনুসন্ধান: Full-Text Index ডেটাবেসে দীর্ঘ বা অ-স্ট্রাকচারড টেক্সট অনুসন্ধান দ্রুত করে।
  2. কাস্টম অনুসন্ধান: CONTAINS এবং FREETEXT ফাংশন দিয়ে প্রাকৃতিক ভাষার অনুসন্ধান সম্ভব হয়।
  3. ক্যাপাসিটি: বড় টেক্সট ডেটা এবং ডকুমেন্টে কার্যকরীভাবে অনুসন্ধান পরিচালনা করতে সহায়ক।

অসুবিধা:

  1. পারফরম্যান্সের প্রভাব: বড় টেবিলের উপর Full-Text Index তৈরি করলে কিছু পারফরম্যান্স সমস্যা হতে পারে।
  2. অতিরিক্ত স্টোরেজ: Full-Text Index তৈরি করলে অতিরিক্ত ডিস্ক স্পেস ব্যবহার হয়।
  3. ব্যবস্থাপনা: Full-Text Index গুলির নিয়মিত রক্ষণাবেক্ষণ এবং আপডেট প্রয়োজন, যা অতিরিক্ত পরিশ্রমের সৃষ্টি করতে পারে।

সারাংশ

Full-Text Catalogs এবং Full-Text Indexes SQL Server-এ টেক্সট ডেটা অনুসন্ধানের জন্য অত্যন্ত গুরুত্বপূর্ণ টুল। এগুলি CONTAINS এবং FREETEXT ফাংশনের মাধ্যমে দ্রুত টেক্সট অনুসন্ধান সক্ষম করে এবং ডেটাবেসের মধ্যে আন্ডারলাইন বা অনুলিপি বিশ্লেষণ করতে সাহায্য করে। তবে, এগুলি ব্যবহারের সময় ডেটাবেস পারফরম্যান্স এবং অতিরিক্ত স্টোরেজের দিকে খেয়াল রাখতে হবে।

Content added By

CONTAINS এবং FREETEXT কুয়েরি ব্যবহার

337

CONTAINS এবং FREETEXT হল Full-Text Search ফিচারের অংশ, যা SQL Server-এ ব্যবহৃত হয় ডেটাবেসে শব্দের মধ্যে অনুসন্ধান করার জন্য। এই ফিচারগুলো আপনাকে কনটেন্টের মধ্যে নির্দিষ্ট শব্দ বা ফ্রেজ খুঁজে বের করার জন্য সাহায্য করে এবং এগুলো মূলত টেক্সট ডেটাতে শব্দ বা ফ্রেজ অনুসন্ধানে ব্যবহৃত হয়।


Full-Text Indexing (ফুল-টেক্সট ইনডেক্সিং)

Full-text indexing হল একটি বিশেষ ধরনের ইনডেক্স যা টেবিলের টেক্সট ডেটার মধ্যে শব্দ এবং ফ্রেজ অনুসন্ধানের জন্য ব্যবহৃত হয়। এটি CONTAINS এবং FREETEXT কুয়েরিগুলোর কার্যকারিতা নির্ভর করে।

ফুল-টেক্সট ইনডেক্স তৈরি করার পদ্ধতি:

CREATE FULLTEXT CATALOG MyCatalog AS DEFAULT;
CREATE FULLTEXT INDEX ON MyTable (MyColumn) KEY INDEX PK_MyTable;

এখানে:

  • MyTable: আপনার টেবিলের নাম।
  • MyColumn: আপনার টেবিলের সেই কলাম যার মধ্যে আপনি পূর্ণ-টেক্সট অনুসন্ধান করতে চান।
  • PK_MyTable: টেবিলের প্রধান কী ইনডেক্স (Primary Key Index)।

1. CONTAINS কুয়েরি

CONTAINS কুয়েরি একটি পূর্ণ-টেক্সট অনুসন্ধান ফাংশন যা একটি নির্দিষ্ট শব্দ বা ফ্রেজ এর উপস্থিতি পরীক্ষা করে। এটি শব্দের বা ফ্রেজের সঙ্গে সম্পর্কিত ডেটার অনুসন্ধান করতে ব্যবহৃত হয়।

CONTAINS সিনট্যাক্স:

SELECT * 
FROM MyTable
WHERE CONTAINS(MyColumn, 'search_word');

এখানে:

  • MyColumn: টেবিলের টেক্সট কলাম।
  • search_word: আপনি যে শব্দটি খুঁজছেন।

CONTAINS উদাহরণ:

SELECT * 
FROM Articles
WHERE CONTAINS(Title, 'database');

এটি Articles টেবিলের Title কলাম থেকে এমন রেকর্ড নির্বাচন করবে যেখানে 'database' শব্দটি আছে।

CONTAINS এর উন্নত ব্যবহার:

  1. ফ্রেজ অনুসন্ধান:

    • আপনি একাধিক শব্দের একটি ফ্রেজের জন্য অনুসন্ধান করতে পারেন।
    SELECT * 
    FROM Articles
    WHERE CONTAINS(Title, '"SQL Server"');
    
  2. ওয়ার্ড বা ফ্রেজের ভ্যারিয়েশন খোঁজা:

    • CONTAINS শব্দের বিভিন্ন ভ্যারিয়েশন বা রূপ খুঁজতে সক্ষম। উদাহরণস্বরূপ:
    SELECT * 
    FROM Articles
    WHERE CONTAINS(Title, 'FORMSOF(INFLECTIONAL, "run")');
    

    এটি "run", "ran", "running" ইত্যাদি সমস্ত ভ্যারিয়েশন খুঁজবে।

  3. ওরফা এবং কনটেক্সট অনুসন্ধান:

    • আপনি শব্দের কোনো বিশেষ ধরনের অনুসন্ধান যেমন INFLECTIONAL বা THESAURUS (থিসসরাস) এর মাধ্যমে খুঁজতে পারেন।
    SELECT * 
    FROM Articles
    WHERE CONTAINS(Description, 'FORMSOF(THESAURUS, "happy")');
    

2. FREETEXT কুয়েরি

FREETEXT কুয়েরি ফ্রি-টেক্সট অনুসন্ধান করে। এটি শব্দের বা ফ্রেজের স্পষ্ট মিল ছাড়াও, থিসসরাস বা সিনোনিম এর ভিত্তিতে সম্পর্কিত শব্দ বা অর্থ খুঁজে বের করে। এটি ব্যবহারকারীকে এমন শব্দগুলো খুঁজতে সাহায্য করে যা স্পষ্টভাবে একই শব্দে মেলে না, তবে তাদের মধ্যে ধারণাগত মিল রয়েছে।

FREETEXT সিনট্যাক্স:

SELECT * 
FROM MyTable
WHERE FREETEXT(MyColumn, 'search_phrase');

এখানে:

  • MyColumn: টেবিলের টেক্সট কলাম।
  • search_phrase: আপনি যে শব্দ বা বাক্যাংশের জন্য অনুসন্ধান করছেন।

FREETEXT উদাহরণ:

SELECT * 
FROM Articles
WHERE FREETEXT(Description, 'data analysis');

এটি Articles টেবিলের Description কলাম থেকে এমন রেকর্ড নির্বাচন করবে যেখানে 'data analysis' এর ধারণাগত মিল রয়েছে। "Data" এবং "Analysis" শব্দের বিভিন্ন রূপ বা সম্পর্কিত শব্দ খুঁজে বের করবে।

FREETEXT এর উন্নত ব্যবহার:

  1. ফ্রি-টেক্সটের মাধ্যমে সমার্থক শব্দ খোঁজা:

    • FREETEXT নির্দিষ্ট শব্দ বা ফ্রেজের সমার্থক শব্দ খুঁজে বের করতে সক্ষম।
    SELECT * 
    FROM Articles
    WHERE FREETEXT(Description, 'business analysis');
    
  2. থিসসরাসের মাধ্যমে খোঁজা:

    • FREETEXT থিসসরাস ব্যবহার করে, যার মাধ্যমে সম্পর্কিত শব্দ খোঁজা হয়। উদাহরণস্বরূপ:
    SELECT * 
    FROM Articles
    WHERE FREETEXT(Description, 'happy');
    

CONTAINS এবং FREETEXT এর পার্থক্য

বৈশিষ্ট্যCONTAINSFREETEXT
ব্যবহারনির্দিষ্ট শব্দ বা ফ্রেজ খোঁজাসাধারণত শব্দ বা ফ্রেজের ধারণা অনুসন্ধান
সঠিকতানির্দিষ্ট শব্দের জন্য এক্স্যাক্ট ম্যাচসম্পর্কিত বা সমার্থক শব্দের জন্য খোঁজা
থিসসরাস সমর্থনশব্দের ভ্যারিয়েশন (Inflectional) এবং থিসসরাস সমর্থন করেথিসসরাস সমর্থন করে, তবে নির্দিষ্ট শব্দ অনুসন্ধান না
বাক্যাংশ অনুসন্ধানফ্রেজ অনুসন্ধান সমর্থন করেফ্রি-টেক্সট অনুসন্ধান, সাধারণভাবে শব্দ খোঁজে

সারাংশ

  • CONTAINS কুয়েরি ব্যবহার করে আপনি টেবিলের টেক্সট কলামে নির্দিষ্ট শব্দ বা ফ্রেজের উপস্থিতি খুঁজে বের করতে পারেন।
  • FREETEXT কুয়েরি সাধারণত শব্দ বা ফ্রেজের ধারণাগত মিল অনুসন্ধান করতে ব্যবহৃত হয় এবং এটি সাইনোনিম বা থিসসরাস অনুসারে সম্পর্কিত শব্দগুলোকেও খুঁজে পায়।
  • CONTAINS শব্দ বা ফ্রেজের নির্দিষ্ট মিলের জন্য কার্যকর, যখন FREETEXT সম্পর্কিত বা সমার্থক শব্দের জন্য উপযোগী।

Full-Text Search ফিচারের মাধ্যমে CONTAINS এবং FREETEXT কুয়েরি ডেটাবেসের টেক্সট ডেটাতে উন্নত অনুসন্ধান কার্যকারিতা প্রদান করে।

Content added By

Full-Text Search এর উদাহরণ

294

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 তৈরির জন্য প্রয়োজনীয় স্টেপ:

  1. Full-Text Catalog তৈরি করতে হবে।
  2. 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

  1. Full-Text Indexing Maintenance:
    • ইনডেক্সের কার্যকারিতা বজায় রাখতে নিয়মিত index rebuild বা index defragmentation করতে হবে। এটি ডেটাবেসের কার্যক্ষমতা উন্নত করতে সাহায্য করে।
  2. Use of Stopwords:
    • কিছু সাধারণ শব্দ (যেমন, a, and, the) Full-Text Index এর মাধ্যমে অগ্রাহ্য করা হয়, যেগুলি Stopwords নামে পরিচিত। আপনি যদি এই শব্দগুলিকে অনুসন্ধানে অন্তর্ভুক্ত করতে চান, তবে অবশ্যই Stoplist কনফিগারেশন পরিবর্তন করতে হবে।
  3. Use of CONTAINS vs FREETEXT:
    • CONTAINS ব্যবহার করলে আপনি নির্দিষ্ট শব্দ বা শব্দসমষ্টি খুঁজে বের করতে পারেন, যা স্পেসিফিক সার্চের জন্য উপযুক্ত। তবে, FREETEXT ব্যবহার করলে এটি শব্দের বিভিন্ন রূপ এবং তাদের সংক্ষিপ্ত অর্থ অনুসন্ধান করতে সক্ষম।

Conclusion

SQL Server-এর Full-Text Search একটি শক্তিশালী টুল যা বড় ডেটাবেসে শব্দ বা বাক্যাংশ অনুসন্ধান করার জন্য ব্যবহৃত হয়। এটি একটি দ্রুত এবং কার্যকরী পদ্ধতি, যা সাধারণ LIKE অপারেটরের তুলনায় বেশি কার্যকরী, বিশেষত যখন বড় টেক্সট ডেটার মধ্যে অনুসন্ধান করতে হয়। Full-Text Index তৈরি করার মাধ্যমে ডেটাবেসের টেক্সট-ভিত্তিক অনুসন্ধান আরও দ্রুত এবং কার্যকর করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...