Giới thiệu
Chào các bạn! Trong bài viết này, chúng ta sẽ tiếp tục series NestJS thực chiến và khám phá khái niệm Full Text Search (FTS) trong MongoDB, một công cụ vô cùng hữu ích cho việc tìm kiếm tài liệu chính xác hơn dựa trên nội dung.
Khái niệm Full Text Search
Full Text Search là một phương pháp tìm kiếm mạnh mẽ, giúp tìm kiếm thông tin không chỉ dựa vào từ khóa mà còn dựa vào nội dung của tài liệu. Điều này đặc biệt quan trọng trong các dự án yêu cầu kết quả tìm kiếm chính xác và đầy đủ.
Vấn đề trong tìm kiếm thông thường
Khi tìm kiếm đơn giản, người dùng thường gặp phải vấn đề như:
- Kết quả không chính xác, khi chỉ tìm kiếm bằng từ khóa cụ thể.
- Tìm kiếm bằng cách sử dụng substring có thể đưa ra những tài liệu không mong muốn như tìm kiếm với từ khóa "John" có thể trả về tài liệu chứa từ "Johnathan" hay "Johnny".
Giải pháp với Full Text Search
Để khắc phục những vấn đề này, chúng ta có thể áp dụng FTS để giúp tìm kiếm thông tin hiệu quả và chính xác hơn.
Thiết lập và cài đặt
1. Cài đặt cơ bản
Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt MongoDB và tạo một collection với một số bản ghi để kiểm tra chức năng FTS:
javascript
db.users.insertMany([
{ name: 'John Doe', address: '3817 Chardonnay Drive, Westport, Washington' },
{ name: 'John Wick', address: '1161 Stoney Lonesome Road, Williamsport, Pennsylvania' },
{ name: 'Johnathan Nguyen', address: '692 Bloomfield Way, Portland, Maine' },
{ name: 'Johnny Depp', address: '1347 Boone Street, Corpus Christi, Texas' }
])
2. Tạo Text Index
Để sử dụng FTS, bạn cần tạo Text Index:
javascript
db.users.createIndex({ name: 'text' })
3. Tìm kiếm với Full Text Search
Khi đã có Text Index, bạn có thể tìm kiếm tài liệu bằng cú pháp sau:
javascript
db.users.find({ $text: { $search: 'John' } })
Các tính năng chính của Full Text Search
- Tìm kiếm cụm từ: Sử dụng dấu nháy kép để tìm kiếm chính xác một cụm từ.
- Loại trừ từ khóa: Thêm dấu
-
trước một từ để loại trừ nó khỏi kết quả.
Cách thức hoạt động của FTS
FTS hoạt động bằng cách sử dụng chỉ mục đã được xây dựng trước, từ đó giúp tăng tốc độ tìm kiếm. Khi thực hiện truy vấn, MongoDB sẽ tham chiếu đến các tài liệu trong chỉ mục thay vì quét từng tài liệu một.
Kết luận
Thông qua bài viết, hy vọng bạn đã hiểu rõ hơn về cách thiết lập và sử dụng Full Text Search trong MongoDB cho dự án NestJS của mình. Nếu bạn cần tìm hiểu sâu hơn về các vấn đề liên quan đến tìm kiếm, hãy theo dõi các bài viết tiếp theo của mình!
Tài liệu tham khảo
- MongoDB Manual
- FTS in MongoDB
source: viblo