Full Text Search
1️⃣ Full-Text Search কি?
Full-Text Search হলো এমন একটি search technique যেখানে একটি text document এর পুরো content বিশ্লেষণ করে relevant result বের করা হয়।
এটা শুধু exact match করে না। বরং:
similar word match করে
plural / singular match করে
word order ignore করতে পারে
typo tolerate করতে পারে
relevance অনুযায়ী ranking দেয়
2️⃣ Simple Database Search vs Full-Text Search
ধরো তোমার একটি product table আছে।
Database Search (LIKE query)
SELECT * FROM products
WHERE name LIKE '%iphone%'
এই query শুধু exact text match করে।
Full-Text Search
Full-text search keyword analyse করে।
User search করলো:
iphone phone
Search engine বুঝবে:
iphone
phone
related words
তারপর best match result দিবে।
3️⃣ Real Example (Product Search)
ধরো তোমার data:
1. Apple iPhone 15 Pro Max
2. Apple iPhone 14
3. Samsung Galaxy S24
4. Samsung Phone Case
User search করলো:
iphone phone
Full-text search result:
1. Apple iPhone 15 Pro Max
2. Apple iPhone 14
3. Samsung Phone Case
কারণ:
iphone → match
phone → match
4️⃣ Full-Text Search Internally কিভাবে কাজ করে
Search engine সাধারণত 5টি ধাপে কাজ করে।
Step 1: Document Indexing
প্রথমে data index করা হয়।
Example document:
{
"title": "Learn Python Programming"
}
এটা store করা হয় OpenSearch-এ।
Step 2: Text Analysis
Search engine text কে ছোট ছোট অংশে ভেঙে ফেলে।
Example:
Learn Python Programming
Tokenization হবে:
learn
python
programming
Step 3: Stop Words Remove
কিছু common word remove করা হয়।
Example sentence:
Learn Python Programming for Beginners
Stop words:
for
the
a
an
Remaining tokens:
learn
python
programming
beginners
Step 4: Inverted Index তৈরি
এটা search engine এর সবচেয়ে গুরুত্বপূর্ণ data structure।
Example documents:
Doc1: Learn Python Programming
Doc2: Python Tutorial for Beginners
Doc3: Advanced Java Programming
Inverted index হবে:
learn → Doc1
python → Doc1, Doc2
programming → Doc1, Doc3
tutorial → Doc2
java → Doc3
এভাবে word → document mapping করা হয়।
এই কারণে search খুব দ্রুত হয়।
5️⃣ Search Query Execution
User search করলো:
python
Search engine inverted index দেখে:
python → Doc1, Doc2
Result:
1. Learn Python Programming
2. Python Tutorial for Beginners
6️⃣ Ranking (Relevance Score)
সব result একরকম important না।
Search engine score calculate করে।
Example documents:
Doc1: Python Tutorial
Doc2: Advanced Python Programming
Doc3: Learn Programming
User search:
python programming
Ranking হতে পারে:
1. Advanced Python Programming
2. Python Tutorial
3. Learn Programming
কারণ:
Doc1 → 1 word match
Doc2 → 2 word match
Doc3 → 1 word match
7️⃣ Typo Tolerance
User লিখলো:
pythn
Search engine বুঝতে পারে:
python
এটা করা হয় fuzzy matching দিয়ে।
Example result:
Python tutorial
Learn python programming
8️⃣ Real World Example
ধরো তুমি YouTube এ search করো:
react tutorial
Videos:
React JS Tutorial
React Crash Course
Learn React for Beginners
YouTube full-text search দিয়ে result দেয়।
আরেকটা example:
Amazon product search।
User search করলো:
iphone charger
Result:
iPhone Fast Charger
Apple Charger for iPhone
USB Charger for iPhone
9️⃣ OpenSearch কেন এত দ্রুত
কারণ:
Traditional DB → scan rows
OpenSearch → inverted index lookup
Database:
1M rows scan
OpenSearch:
Direct word lookup
এই কারণে milliseconds এ result আসে।
🔑 Mentor Summary
Full-Text Search এর মূল ধারণা:
Document → Text analysis → Tokenization → Inverted index → Fast search
*********************************************************************************
1️⃣ আমাদের 5 টা document
Doc1: { "id": 1, "name": "computer" }
Doc2: { "id": 2, "name": "laptop computer" }
Doc3: { "id": 3, "name": "desktop pc" }
Doc4: { "id": 4, "name": "gaming laptop" }
Doc5: { "id": 5, "name": "computer accessories" }
2️⃣ Tokenization (Analyzer)
Analyzer প্রতিটি name field কে tokenize করে:
| Doc ID | Tokens |
|---|---|
| 1 | computer |
| 2 | laptop, computer |
| 3 | desktop, pc |
| 4 | gaming, laptop |
| 5 | computer, accessories |
3️⃣ Inverted Index তৈরি
Token → Doc ID mapping:
| Token | Doc IDs |
|---|---|
| computer | 1, 2, 5 |
| laptop | 2, 4 |
| desktop | 3 |
| pc | 3 |
| gaming | 4 |
| accessories | 5 |
💡 লক্ষ্য করো: token → doc IDs, ঠিক dictionary style
4️⃣ User Query Examples
Example 1: Search "computer"
Query tokenize →
"computer"Inverted index lookup →
"computer"→ [1, 2, 5]Result → Doc1, Doc2, Doc5
Example 2: Search "laptop"
Query tokenize →
"laptop"Inverted index lookup →
"laptop"→ [2, 4]Result → Doc2, Doc4
Example 3: Search "pc"
Query tokenize →
"pc"Inverted index lookup →
"pc"→ [3]Result → Doc3
*******************************************************************************
🔹 OpenSearch Full-Text Search Flow
Document store
তুমি document OpenSearch এ পাঠাও (e.g.,
"name": "computer-pc")
Tokenization (Analyzer)
Field type = text → analyzer চালানো হয়
"computer-pc"→"computer","pc"tokens তৈরি হয়
Inverted Index তৈরি
Token → Doc ID mapping তৈরি হয়
উদাহরণ:
computer → [doc1, doc2, doc5]
pc → [doc3]
laptop → [doc2, doc4]
User Query
User search করে, যেমন
"computer"Query analyzer →
"computer"token তৈরি করে
Token Match in Inverted Index
"computer"token → inverted index lookup → [doc1, doc2, doc5]
Return Result
Matching doc return হয়, relevance score অনুযায়ী sort করা হয়
✅ এক বাক্যে summary:
Document → tokenize → inverted index
Query → tokenize → match tokens in index → return docs