LẬP TRÌNH

Dựng dịch vụ tìm kiếm mở rộng
với FastAPI và PostgreSQL

Đưa yêu cầu tìm kiếm, nhận kiến trúc, sơ đồ bảng và mã FastAPI dùng full-text search, sẵn đường nâng lên Elasticsearch.

Dùng để: Thiết kế dịch vụ tìm kiếm dùng FastAPI và PostgreSQL, có tìm theo từ khóa và từ đồng nghĩa, sẵn đường mở rộng.

Nội dung prompt

VAI TRÒ
Bạn là kỹ sư backend, quen xây dịch vụ tìm kiếm có khả năng mở rộng. Bạn ưu tiên mã rõ ràng, dễ bảo trì và tách module.

NHIỆM VỤ
Thiết kế và viết mã cho dịch vụ tìm kiếm dùng FastAPI và PostgreSQL theo yêu cầu trong phần ĐẦU VÀO.

ĐẦU VÀO
- Loại dữ liệu cần tìm: [VÍ DỤ: BÀI VIẾT, SẢN PHẨM]
- Trường cần tìm: [VÍ DỤ: TIÊU ĐỀ, MÔ TẢ, THẺ]
- Truy vấn cần hỗ trợ: [VÍ DỤ: TỪ KHÓA, TỪ ĐỒNG NGHĨA, LỌC]
- Quy mô dự kiến: [SỐ BẢN GHI, LƯU LƯỢNG]
- Ràng buộc kỹ thuật: [VÍ DỤ: PYTHON 3.11, POSTGRES 15]
- Đường mở rộng mong muốn: [VÍ DỤ: ELASTICSEARCH, KAFKA]

QUY TẮC
1. Bắt đầu bằng kiến trúc tổng quan dạng module và lý do chọn từng phần.
2. Thiết kế bảng và chỉ mục cho tìm kiếm toàn văn, nêu rõ trường nào dùng chỉ mục nào.
3. Viết các endpoint FastAPI cho tìm kiếm từ khóa, tìm từ đồng nghĩa và lọc kết quả.
4. Tách lớp truy vấn khỏi lớp API để sau này thay bằng Elasticsearch dễ dàng.
5. Mô tả cách ghi log truy vấn và cập nhật dữ liệu thời gian thực qua Kafka bằng lời, chưa cần mã đầy đủ.
6. Có xử lý phân trang và giới hạn kết quả.
7. Ghi chú chỗ nào cần thêm chỉ mục khi dữ liệu lớn lên.

KHUÔN ĐẦU RA
1. Kiến trúc module
2. Sơ đồ bảng và chỉ mục
3. Mã endpoint chính kèm lớp truy vấn
4. Kế hoạch mở rộng sang Elasticsearch và Kafka

Thay nội dung trong dấu [ ] trước khi sử dụng.

Mẹo tinh chỉnh

Điểm quan trọng nhất là tách lớp, nên hãy kiểm tra mã sinh ra xem phần gọi cơ sở dữ liệu có bị nhúng thẳng vào endpoint không. Với dữ liệu tiếng Việt, yêu cầu xử lý dấu và chuẩn hóa chữ thường để tìm kiếm chính xác hơn. Nếu quy mô còn nhỏ, giữ PostgreSQL là đủ và chỉ chuẩn bị đường nâng lên Elasticsearch, đừng thêm công cụ thừa. Khi cần log truy vấn, mô tả sự kiện nào nên ghi để phục vụ phân tích sau này. Cuối cùng, yêu cầu bộ test cơ bản cho các endpoint để bạn chạy kiểm tra trước khi ghép vào hệ thống lớn.

Prompt khác cùng nhóm

Dựng ứng dụng trắc nghiệm tương tác bằng JavaScriptCho ngân hàng câu hỏi và thiết lập, nhận về app trắc nghiệm: nhiều dạng câu, đếm ngược, chấm điểm, xem lại bài và bảng điểm cao.Xem promptDựng ứng dụng quản lý thu chi cá nhânMô tả nhu cầu tài chính, nhận về app quản lý thu chi: bảng điều khiển, phân loại giao dịch, biểu đồ, mục tiêu ngân sách và sao lưu.Xem promptDựng ứng dụng web tạo hóa đơn PDF bằng Node.jsMô tả nguồn đơn hàng và quy tắc hoa hồng, nhận về kiến trúc ứng dụng Node.js xuất hai tệp PDF: bảng chi tiết và hóa đơn.Xem promptDựng ứng dụng ghi chú Markdown hai màn hìnhMô tả nhu cầu ghi chú, nhận về app hai khung soạn và xem trước, hỗ trợ bảng, khối mã, công thức và lưu trong trình duyệt.Xem promptDựng Telegram Mini App điểm danh ca làm việcMô tả ca làm và vai trò, nhận về mini app: chấm công vào ra, xác thực người dùng, xem lịch ca và trang quản trị xếp ca.Xem promptLập quy trình xử lý lỗ hổng bảo mật CVEĐưa danh sách lỗ hổng và hệ thống đang dùng, nhận về quy trình phân tích nguyên nhân, chọn mức ưu tiên và tài liệu tuân thủ.Xem promptĐóng vai kỹ sư phần mềm nhúng ô tô theo chuẩn AUTOSARĐưa bối cảnh vi điều khiển và yêu cầu, nhận về cách chia lớp phần mềm, danh sách mô-đun và điểm kiểm tra an toàn.Xem promptTạo mẫu giao diện ứng dụng trò chuyện AI cho AndroidMô tả tính năng và địa chỉ API, nhận về bản mẫu giao diện tối gồm bốn màn hình và luồng điều hướng bằng thanh cạnh trái.Xem promptDựng game đua xe 3D bằng Three.jsMô tả đường đua và chế độ chơi, nhận về game đua xe: mô phỏng vật lý, đối thủ AI, HUD đầy đủ, hiệu ứng khói và thời tiết.Xem prompt