Saya memiliki persyaratan untuk menyaring kata-kata kotor dari kiriman pengguna dalam aplikasi web berbasis Java. Klien menyadari Masalah Scunthorpe dan Masalah Clbuttic dan telah menerima konsekuensinya. Tolong, saya tidak ingin debat tentang kekurangan sensornya.
Ada dua bit data:
- Pengiriman pengguna, yang berpotensi mengandung 500 kata atau lebih;
- Tabel database satu kolom yang berisi kata-kata yang tidak diizinkan. Mungkin ada ribuan catatan dalam tabel ini.
Solusi saat ini tampaknya salah bagi saya:
- Seluruh tabel dimuat ke String statis [] pada startup ke Singleton (dengan demikian berada dalam memori).
- Untuk setiap pengiriman pengguna, kami mengulang-ulang array dan melakukan .indexOf () untuk melihat apakah ada kata yang diberikan dalam String [] muncul dalam pengiriman.
- Jika muncul, kami ganti dengan% $ # @% - karakter gaya. Ini dilakukan dengan tokenizing pengiriman pengguna, perulangan melalui seluruh pengiriman pengguna sebagai token (lagi), dan mengganti setiap instance dari kata yang ditemukan.
Mungkin ada kecemerlangan dalam solusi ini, tapi saya skeptis. Dan setelah melihatnya sebentar saya tidak dapat menemukan jalan saya melewatinya.
Pertanyaannya adalah, apa solusi yang akan memberikan kinerja yang baik dan semoga cukup masuk akal untuk dipelihara oleh pengembang di masa depan setelah saya dipecat karena gagal menyaring kata-kata tidak jelas yang belum pernah saya dengar?