Hỏi cách lưu trữ để tìm số dòng theo từ khoá nhanh nhất

Xin chào mọi người, mình đang làm một bài toán như sau:

Input: một list bài viết và một từ khoá.
Output: bài viết chứa từ khoá đó và vị trí các dòng nơi mà từ khoá đó hiện diện.

Cách hiện tại mình làm:

  1. Lưu bài viết trong database.
  2. Lọc các bài viết có nội dung chứa keyword.
  3. Với mỗi bài viết, mình dùng hàm split cắt bài viết thành một mảng chứa các dòng.
  4. Lặp qua mỗi dòng, nếu có chứa từ khoá thì index chính là chỉ số cần tìm.

Cách này thì mình thấy hơi chuối, lỡ có có 1 triệu văn bản, mỗi văn bản 1000 bài viết thì vấn đề hiệu suất không ổn một tý nào cả. Mình chưa nghĩ ra được giải pháp nào hay hơn, lên đây xin nhờ mọi người cho ý kiến tham khảo để giải tiếp, rất mong được mọi người giúp đỡ.

Mình xin chân thành cảm ơn.

Cách của bạn 10k bài là thấy tìm nổ máy rồi.
Hôm trước có bảo bạn tìm hiểu elasticsearch mà vẫn mà tự split cắt làm gì.
elasticsearch người ta đang còn sài tìm kiếm trên vài TB dữ liệu cơ mà @@

4 Likes

Vấn đề là không được dùng cái có sẵn bác ạ, chứ em áp dụng rồi đó chứ, nhưng bài lần này chú trọng thuật toán bác ạ

:slight_smile: Vậy bạn mò từ khóa full text search algorithms trên google chưa?
Mà bạn muốn thuật toán chắc mò vào đây đọc xem có gì, vì nó open source mà https://github.com/apache/lucene-solr

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?