2

我刚刚写了一个 custom CharTokenizer,我想在我的 Solr 服务器中使用它。

在 Solr3 中,我可以在 create 方法中扩展TokenizerFactory并返回 my ,但在 Solr4 中不存在。CharTokenizerTokenizerFactory

所以,我注意到我应该替换TokenizerFactoryTokenFilterFactory,但在这种情况下,我不能返回我的 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 中现有 Tokenizer 的源代码。

例子 :-

WhitespaceTokenizer
WhitespaceTokenizerFactory

于 2012-11-02T04:14:02.457 回答