Java 기반 웹 응용 프로그램에서 사용자의 제출에서 비속어를 필터링해야합니다. 클라이언트는 Scunthorpe Problem 과 Clbuttic Problem 을 모두 알고 있으며 그 결과를 받아 들였습니다. 검열이 없다는 장점에 대해서는 토론하고 싶지 않습니다.
두 비트의 데이터가 있습니다 :
- 잠재적으로 500 단어 정도를 포함 할 수있는 사용자의 제출;
- 허용되지 않는 단어가 포함 된 단일 열 데이터베이스 테이블입니다. 이 테이블에는 수천 개의 레코드가있을 수 있습니다.
현재 해결책이 나에게 잘못 된 것 같습니다.
- 전체 테이블은 시작할 때 정적 String []에 싱글 톤 (따라서 메모리에 상주)으로로드됩니다.
- 각 사용자 제출에 대해 배열을 반복하고 .indexOf ()를 수행하여 제출에 String []의 특정 단어가 나타나는지 확인합니다.
- 표시되면 % $ # @ % 스타일 문자로 바뀝니다. 이는 사용자 제출을 토큰 화하고 전체 사용자 제출을 토큰으로 반복 (루프)하고 찾은 단어의 각 인스턴스를 대체하여 수행됩니다.
이 솔루션에는 훌륭 할 수 있지만 회의적입니다. 그리고 그것을 잠시 동안 본 후에는 과거의 길을 찾을 수 없습니다.
질문은, 내가 들어 본 적이없는 모호한 단어를 걸러 내지 못해서 해고 된 후에도 미래의 개발자가 유지할 수있는 좋은 성능을 제공하고 합리적으로 제정 될 수있는 솔루션은 무엇입니까?