게시판에 금칙어 처리를 하려고한다.
어떤 방식이 가장 효율적인가 고민하다가
알고리즘은 아호코라식용으로 골랐고 싱글톤으로 bean 생성 후 사용하는 방법으로 구성했다.
10만개의 금칙어를 적용해본 결과 나름 빠른 퍼포먼스가 나오고있다.
테스트를 위해 임의로 생성한 금칙어라 패턴이 비슷해 빠른 속도가 나왔을 수 있어
지켜보다 나중에 개선하는 방향으로 가야겠다.
WebConfig implements WebMvcConfigurer
@Bean
public Badword badword() {
return new Badword();
}
package com.me.genie.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.LinkedHashSet;
import java.util.Scanner;
import org.ahocorasick.trie.Trie;
public class Badword {
public static LinkedHashSet<String> records;
public static Trie badwordsTrie; //아호코라식용
public Badword() {
records = new LinkedHashSet<>();
System.out.println("=================== 실행됩니다.");
try (Scanner scanner = new Scanner(new File("C:\\Users\\user\\Desktop\\badword.csv"))) {
while (scanner.hasNextLine()) {
String a = scanner.nextLine();
records.add(a);
System.out.println(a);
}
badwordsTrie = Trie.builder().ignoreCase().ignoreOverlaps().addKeywords(records).build(); //아호코라식용 초기화
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Controller or Service
if(Badword.badwordsTrie.containsMatch("홍길동1")) {
System.out.println("오키오키");
}
'프로그래밍' 카테고리의 다른 글
| [Google 로그인] #2 FRONT 코드작성! (0) | 2021.02.16 |
|---|---|
| [Google 로그인] #1 개발자 콘솔 가입! (0) | 2021.02.16 |
| Oracle Tigger 생성! AFTER INSERT OR UPDATE !! (0) | 2020.11.30 |
| Php Codeigniter 다국어 Session 처리 (0) | 2020.11.23 |
| PHP Simple Captcha 적용해보기! (0) | 2020.11.20 |