Ho l'obbligo di filtrare le volgarità dagli invii degli utenti in un'applicazione Web basata su Java. Il cliente è a conoscenza sia del Scunthorpe problema e la Clbuttic problema e hanno accettato le conseguenze. Per favore, non desidero un dibattito sul merito della mancanza della censura.
Esistono due bit di dati:
- L'invio dell'utente, che può contenere potenzialmente 500 parole o giù di lì;
- Una tabella di database a colonna singola contenente parole non consentite. Ci possono essere molte migliaia di record in questa tabella.
La soluzione attuale mi sembra sbagliata:
- L'intera tabella viene caricata in una stringa statica [] all'avvio in un Singleton (quindi risiede in memoria).
- Per ogni invio utente eseguiamo il ciclo attraverso l'array e facciamo un .indexOf () per vedere se una qualsiasi parola nella stringa [] appare nell'invio.
- Se appare, sostituiamo con% $ # @% - caratteri di stile. Questo viene fatto tokenizzando l'invio dell'utente, eseguendo il ciclo dell'intero invio dell'utente come token (di nuovo) e sostituendo ogni istanza della parola trovata.
Potrebbe esserci brillantezza in questa soluzione, ma sono scettico. E dopo averlo guardato per un po 'non riesco a trovarlo.
Le domande sono: qual è una soluzione che darà buone prestazioni e si spera sia ragionevolmente ragionevole per i futuri sviluppatori da mantenere dopo che sono stato licenziato per non riuscire a filtrare qualche parola oscura di cui non ho mai sentito parlare?