我只是写了一个自定义CharTokenizer
,我想在我的Solr服务器中使用它。
在Solr3中,我可以扩展TokenizerFactory
并在create方法中返回我的CharTokenizer
,但是TokenizerFactory
在Solr4中不存在。
因此,我注意到应该将TokenizerFactory
替换为TokenFilterFactory
,但是在这种情况下,由于参数不匹配,因此无法返回我的自定义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);
}
}
提前致谢。
最佳答案
检查实现的最佳方法是查看Lucene中现有Tokenizer的源代码。
例子:-
WhitespaceTokenizer
WhitespaceTokenizerFactory
关于java - 在Solr4中应用自定义CharTokenizer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13183729/