Токенайзер Lucene Bigrams для включения знаков препинания - PullRequest
2 голосов
/ 09 июня 2011

Есть ли вероятность, что я смогу использовать ShingleAnalyzerWrapper от Lucene для генерации биграмм с учетом знаков пунктуации (то есть:. \, \;)?Быстрый пример: поле «один два; три четыре» будет содержать только 2 биграммы: (один два) и (три четыре)?

1 Ответ

1 голос
/ 10 июня 2011

Вы можете создать 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().

...