Lucene bigrams tokenizer包括标点符号

时间:2011-06-09 17:20:27

标签: lucene punctuation

是否有可能使用Lucene的ShingleAnalyzerWrapper生成双字母组合,并考虑到标点​​符号(即:。\,\;)?快速举例:鉴于字段“一二;三四”仅提供2个双字母:(一个两个)和(三个四个)?

1 个答案:

答案 0 :(得分:1)

您可以使用基于ShingleAnalyzerWrapper的分析器创建LetterTokenizerLetterTokenizer以非字母分隔输入文本。类似的东西:

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()方法。