ngram 구현하기

Java 2020. 11. 26. 10:02

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);
    }

 

반응형
블로그 이미지

visualp

c#, java

,