elasticsearch 색인시키기 위해서 2자 , 3자 색인이 필요한 상황
그래서 간단하게 Stringtokenlizer활용하여 만듬
ex)
input : 힐스테이트2차
//2자 result
힐스
스테
테이
이트
트2
2차
//3자 result
힐스테
스테이
테이트
이트2
트2차
/**
* elastic search 용 ngram 2,3 자르기
* @param str
* @param n 자를 글자수
* @return
*/
public static String esNgram(String str, int n){
StringTokenizer stringTokenizer = new StringTokenizer(str.trim()," ");
List<String> strArr = new ArrayList<>();
while(stringTokenizer.hasMoreTokens()){
String token = stringTokenizer.nextToken();
for(int i=0; i<token.length(); i++){
if(i+n > token.length()){
break;
}
strArr.add(token.substring(i,i+n));
}
}
return String.join(" ", strArr);
}
반응형
'Java' 카테고리의 다른 글
jpa yyyy-MM-dd 날짜 범위 검색 (0) | 2021.04.12 |
---|---|
Creation of SecureRandom instance for session ID generation using , tomcat 실행시 (0) | 2021.02.19 |
oracle jdbc version and jdk(jre) version (0) | 2021.01.18 |
spring boot redis session 적용하기 (0) | 2021.01.14 |
jsp header(상단) html 공백 제거 (0) | 2019.07.25 |