Tôi có một yêu cầu để lọc thô tục ra khỏi các bài đăng của người dùng trong một ứng dụng web dựa trên Java. Khách hàng nhận thức được cả Vấn đề Scunthorpe và Vấn đề Clbuttic và đã chấp nhận hậu quả. Xin vui lòng, tôi không mong muốn một cuộc tranh luận về giá trị của việc thiếu kiểm duyệt.
Có hai bit dữ liệu:
- Nội dung gửi của người dùng, có khả năng chứa 500 từ hoặc hơn;
- Bảng cơ sở dữ liệu một cột chứa các từ không được phép. Có thể có hàng ngàn hồ sơ trong bảng này.
Giải pháp hiện tại có vẻ sai đối với tôi:
- Toàn bộ bảng được tải vào Chuỗi tĩnh [] khi khởi động vào Singleton (do đó nằm trong bộ nhớ).
- Đối với mỗi lần gửi của người dùng, chúng tôi lặp qua mảng và thực hiện .indexOf () để xem liệu có từ nào trong Chuỗi [] xuất hiện trong nội dung gửi không.
- Nếu nó xuất hiện, chúng tôi thay thế bằng các ký tự kiểu% $ # @%. Điều này được thực hiện bằng cách mã hóa nội dung gửi của người dùng, lặp qua toàn bộ nội dung gửi của người dùng dưới dạng mã thông báo (một lần nữa) và thay thế từng phiên bản của từ được tìm thấy.
Có thể có sự sáng chói trong giải pháp này, nhưng tôi nghi ngờ. Và nhìn nó một lúc tôi không thể tìm được cách vượt qua nó.
Câu hỏi là, giải pháp nào sẽ mang lại hiệu suất tốt và hy vọng có thể hợp lý để các nhà phát triển trong tương lai duy trì sau khi tôi bị sa thải vì không lọc được một số từ tối nghĩa mà tôi chưa từng nghe đến?