본문 바로가기

Lucene

[lucene] 오랜만에 진행중인 상황 올려봅니다.

커..

Analyzer하나 만드는게 장난 아닙니다.

전에 올렸듯이.. Tokenizer는 기본적으로 스페이스,특수문자,영어&숫자 와 한글 분리
로 토큰을 만들어 내는 방식을 고수하고 있습니다.

문제는 이제 저렇게 해서 나온 TokenStream을 받아서 어떻게 색인어를 추출하느냐..

마땅히 어디서 구할 사전도 없고

해서 정말 아는 것도 없는 놈이 막코딩을 하고 있습니다..ㅠㅠ

일단 기본적인 명사 사전을 가지고..

들어온 Token에서 명사를 추출해야 하는데.. 현재는 이런 방식을 쓰고 있습니다.

String target_term = "언어로배우는자바디자인패턴";

  for(int i=0; i < target_term.length(); i++) {
   for(int j=i; j < target_term.length() + 1; j++) {
     temp = target_term.substring(i, j);

     if(사전.contains(temp)) {
           추출;
      result.setPositionIncrement(1);
     }
   }
  }

대략 이런 방식입니다.

무식한 방법이죠.. 그런데 단어안에 있는 모든 명사를 뽑아내고 싶다 보니..
저런 방식으로 하게 되었네요..

자 이렇게 해놓고 보니..
"언어로배우는자바디자인패턴" 여기서..

제가 원하는 것은

"언어","자바","디자인","패턴","디자인패턴" 이정도이겠지만..

위 방식으로 검색을 해보면,,

"바디","어로","배우" 등의 단어가 사전에 있을경우 이 단어들도

추출이 되어버린다는 거죠... 먼 옛날 "핑클" 검색하면 "서핑클럽" 검색되듯이..


이것을 어떻게 해야 할지 막막합니다.

국어를 잘해서 형태소 분석을 하고 있는 것도 아니고..

막연하게 가중치(?)

가중치를 주려고 해도 뭔가 로직이있어야 할텐데.. "바디" 보다는 "자바" 가 훨씬

의미있는 term이다. 라는 것을 알아낼 수 있는 방법...


덕분에 계속 삽질 중 입니다..;;; ㅠㅠ