2

カスタム を作成したばかりCharTokenizerで、それを Solr サーバーで使用したいと考えています。

Solr3 では、create メソッドで my を拡張TokenizerFactoryして返すことができましたが、Solr4 には存在しません。CharTokenizerTokenizerFactory

TokenizerFactoryということで、に置き換える必要があることに気づきましたが、この場合、パラメータが一致しないため、TokenFilterFactory自分の custom を返すことができません。CharTokenizer

私はいくつかのドキュメントも検索していますが、そこには本当に役立つものはないようです。

では、どうすれば機能させることができますか?

例:

public class MyCustomTokenizer extends CharTokenizer {

  char anotherSpace = 24;

  public MyCustomTokenizer(Version matchVersion, Reader in) {
    super(matchVersion, in);
  }

  protected boolean isTokenChar(int c) {
    return !Character.isWhitespace(c) && isToken((char) c);
  }

  private boolean isToken(char c) {
    if (c == anotherSpace || c == ',') {
        return false;
    }
    return true;
  }
}

public class MyCustomTokenizerFactory extends TokenFilterFactory {

  public void init(Map<String, String> args) {
    super.init(args);
    assureMatchVersion();
  }

  @Override
  public TokenStream create(TokenStream input) {
      // sh*t happens here
    return new MyCustomTokenizer(luceneMatchVersion, input);
  }
}

前もって感謝します。

4

1 に答える 1

1

実装を確認する最善の方法は、Lucene の既存のトークナイザーのソース コードを調べることです。

例 :-

WhitespaceTokenizer
WhitespaceTokenizerFactory

于 2012-11-02T04:14:02.457 に答える