Lucene/Solr 4.9.0 지원

Issue #1 resolved
Yong-woon Lee created an issue

Lucene/Solr 4.9.0에서 Tokenizer 쪽에서 변경점이 있는 듯... 현재 알게된 것

  • Java 1.7 이상을 사용해야 함
  • maven 3.x 를 사용해야 함
  • org.apache.lucene.util.AttributeSource.AttributeFactory 패키지 위치가 변경됨 -> org.apache.lucene.util.AttributeFactory

위의 것 적용하여 테스트 했더니 아래와 같은 에러 발생

#!

java.lang.IllegalStateException: TokenStream contract violation: reset()/close() call missing, reset() called multiple times, or subclass does not call super.reset(). Please see Javadocs of TokenStream class for more information about the correct consuming workflow.
    at org.apache.lucene.analysis.Tokenizer$1.read(Tokenizer.java:111)
    at java.io.Reader.read(Reader.java:140)
    at org.bitbucket.eunjeon.mecab_ko_lucene_analyzer.MeCabKoTokenizer.getDocument(MeCabKoTokenizer.java:185)
    at org.bitbucket.eunjeon.mecab_ko_lucene_analyzer.MeCabKoTokenizer.incrementToken(MeCabKoTokenizer.java:126)
... 생략

일단 MeCabTokenizer#getDocument()를 아래와 같이 바꿨더니 테스트 통과. 자세한 원인을 몰라서 더 알아볼 필요있음. 혹시 알게되면 댓글 달아주세요.

public final class MeCabKoTokenizer extends Tokenizer {
  ...
  private String getDocument() throws IOException {
    this.reset(); // <-- 추가된 부분
    StringBuffer document = new StringBuffer();
    char[] tmp = new char[1024];
    int len;
    while ((len = input.read(tmp)) != -1) {
      document.append(new String(tmp, 0, len));
    }
    return document.toString().toLowerCase();
  }
  ...
}

Comments (3)

  1. Log in to comment