Eu tenho um requisito para filtrar palavrões dos envios de usuários em um aplicativo Web baseado em Java. O cliente conhece os problemas de Scunthorpe e Clbuttic e aceitou as consequências. Por favor, não desejo um debate sobre o mérito da falta de censura.
Existem dois bits de dados:
- O envio do usuário, que pode conter 500 palavras ou mais;
- Uma tabela de banco de dados de coluna única contendo palavras que não são permitidas. Pode haver muitos milhares de registros nesta tabela.
A presente solução parece errada para mim:
- A tabela inteira é carregada em uma String estática [] na inicialização em um Singleton (residindo assim na memória).
- Para cada envio de usuário, percorremos o array e executamos um .indexOf () para ver se alguma palavra na String [] aparece no envio.
- Se aparecer, substituímos por caracteres no estilo% $ # @%. Isso é feito tokenizando o envio do usuário, fazendo um loop por todo o envio do usuário como tokens (novamente) e substituindo cada instância da palavra encontrada.
Pode haver brilho nessa solução, mas sou cético. E tendo olhado para ele por um tempo, não consigo encontrar o meu caminho.
A pergunta é: qual é a solução que fornecerá bom desempenho e, com sorte, será razoavelmente sensata para futuros desenvolvedores manterem depois que eu for demitido por não filtrar alguma palavra obscura da qual nunca ouvi falar?