# 4. Cascading Search 7 Tầng

Sau khi gộp kết quả 2 Lane, nếu **không đủ 3 sản phẩm**, Engine tự động kích hoạt Cascading — nới lỏng bộ lọc dần qua 7 tầng.

## Tại sao cần 7 tầng?

| Chỉ có 1 tầng | Cascading 7 tầng |
|---|---|
| Tìm đúng hoặc không tìm → "Hết hàng" | Luôn tìm được SP → Không bao giờ nói "Hết hàng" |
| Khách bỏ đi vĩnh viễn | Khách vẫn có đồ để xem → cơ hội chốt sale |

## Chi tiết từng tầng

### Tầng 1: Exact Match (Chính xác)
```sql
SELECT * FROM products
WHERE product_line IN (...) AND gender = '...'
  AND price <= price_max AND BITMAP_CONTAINS(tags, ...)
LIMIT 10
```
Khớp 100% tags + giá + giới tính. Nếu đủ 3 SP → **dừng ngay**, không xuống tầng dưới.

### Tầng 2: NGRAM + Bitmap (Full-text)
```sql
SELECT * FROM products
WHERE MATCH(description, '...') AND BITMAP_CONTAINS(tags, ...)
  AND price <= price_max
LIMIT 10
```
Bổ sung full-text search để bắt từ khóa đặc thù.

### Tầng 3: Drop Tags (Bỏ tags chi tiết)
Giữ `product_line` + `price`, bỏ tags → mở rộng tập kết quả.

### Tầng 4: Drop Gender (Nới lỏng giới tính)
Bỏ filter gender, bốc thêm Unisex → cross-sell thông minh.

### Tầng 5: Upsell 1.5x (Nâng giá nhẹ)
```sql
SELECT * FROM products
WHERE product_line IN (...) AND price <= (price_max * 1.5)
LIMIT 10
```
**Tâm lý:** "Chỉ nhỉnh hơn chút xíu thôi" — 40% khách chấp nhận nới thêm 50%.

### Tầng 6: Upsell 2x (Nâng giá mạnh)
```sql
SELECT * FROM products
WHERE product_line IN (...) AND price <= (price_max * 2.0)
LIMIT 10
```
**Tâm lý:** "Đắt hơn nhưng xài 3 mùa đông" — push giá trị dài hạn.

### Tầng 7: Drop Price — Hail Mary
```sql
SELECT * FROM products
WHERE product_line IN (...)
-- Không lọc giá. Không lọc gì cả.
LIMIT 10
```
**Tâm lý:** Thà khách chê đắt → vẫn còn cơ hội thuyết phục. Tốt hơn là báo hết hàng → mất khách vĩnh viễn.

## Quy tắc dừng

Engine dừng cascading khi đạt **>= 3 sản phẩm** (sau dedup). Con số 3 được chọn vì:
- 1 SP: Không có lựa chọn → khách cảm thấy bị ép
- 2 SP: Ít quá → khách thấy "shop này nghèo hàng"
- **3 SP: Đủ để so sánh** → khách cảm thấy được lựa chọn
- 5+ SP: Quá nhiều → khách overwhelmed

File tham chiếu: `product_search_engine.py` — hàm `_cascading_search()`
