Os seguintes esquemas de otimização são recomendados para problemas de desempenho de filtragem de palavras sensíveis em cenários de alta simultaneidade:
- Escolha de estruturas de dados eficientesUso preferencial de árvores DFA ou Trie em vez de expressões regulares, com complexidade de tempo reduzida a O(n), independentemente do tamanho do léxico. A maioria das linguagens de programação (por exemplo, Python's
pyahocorasick
bibliotecas) para fornecer implementações prontas para uso. - Tesauro pré-carregadoCriação de palavras sensíveis como árvores Trie/DFAs na memória na inicialização do serviço para evitar a análise de arquivos repetidamente por solicitação.
- cache distribuídoPara sistemas de hiperescala, considere armazenar os combinadores construídos em um cache como o Redis e compartilhá-los entre vários nós.
De acordo com os dados de teste, o tempo de correspondência do algoritmo DFA para o processamento de 100.000 palavras de texto geralmente é inferior a 100 ms, o que é adequado para aplicativos multimilionários de uso diário.
Essa resposta foi extraída do artigoSensitive-lexicon: um dicionário de sinônimos continuamente atualizado para palavras sensíveis em chinêsO