J'ai une obligation de filtrer le blasphème des soumissions des utilisateurs dans une application Web basée sur Java. Le client est conscient à la fois du problème Scunthorpe et du problème Clbuttic et en a accepté les conséquences. Je vous en prie, je ne souhaite pas un débat sur le bien-fondé de l'absence de censure.
Il y a deux bits de données:
- La soumission de l'utilisateur, qui peut potentiellement contenir environ 500 mots;
- Une table de base de données à colonne unique contenant des mots qui ne sont pas autorisés. Il peut y avoir plusieurs milliers d'enregistrements dans ce tableau.
La solution actuelle me semble fausse:
- La table entière est chargée dans une chaîne statique [] au démarrage dans un singleton (résidant ainsi en mémoire).
- Pour chaque soumission d'utilisateur, nous parcourons le tableau et faisons un .indexOf () pour voir si un mot donné dans la chaîne [] apparaît dans la soumission.
- S'il apparaît, nous le remplaçons par des caractères de style% $ # @%. Pour cela, vous devez tokeniser la soumission de l'utilisateur, parcourir (à nouveau) toute la soumission de l'utilisateur en tant que jetons et remplacer chaque instance du mot trouvé.
Il peut y avoir de l'éclat dans cette solution, mais je suis sceptique. Et après l'avoir regardé pendant un moment, je ne peux pas trouver mon chemin.
La question est de savoir quelle est la solution qui donnera de bonnes performances et, espérons-le, sera raisonnablement raisonnable pour les futurs développeurs à maintenir après que je sois viré pour avoir échoué à filtrer un mot obscur dont je n'ai jamais entendu parler?