2

我是否有机会使用 Lucene 的 ShingleAnalyzerWrapper 生成考虑到标点​​符号的二元组(即:.\,\;)?快速示例:给定字段“一二;三四”将仅提供 2 个二元组:(一二)和(三四)?

4

1 回答 1

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

于 2011-06-10T05:14:23.867 回答