是否有可能使用Lucene的ShingleAnalyzerWrapper生成双字母组合,并考虑到标点符号(即:。\,\;)?快速举例:鉴于字段“一二;三四”仅提供2个双字母:(一个两个)和(三个四个)?
答案 0 :(得分:1)
您可以使用基于ShingleAnalyzerWrapper
的分析器创建LetterTokenizer
。 LetterTokenizer
以非字母分隔输入文本。类似的东西:
public class MyCharAnalyzer extends Analyzer {
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = new LetterTokenizer(reader);
return result;
}
}
ShingleAnalyzerWrapper myBigramWrapper = new ShingleAnalyzerWrapper(new MyCharAnalyzer());
如果您希望更好地控制您认为标点符号的内容,可以继承CharTokenizer
并覆盖isTokenChar()
方法。