우선은 JapaneseAnalyzer에 전달되는 인수, 덤비는되어 특히 Tokenizer.Mode (I 그 옵션의 의도에 내에서 정확하게 일본어의 구조에 대해 아무것도, 그래서 아무 도움을 알 수 없음) .
당신은이에 대한 자신의 분석을 만들어야한다는 없다면. 자신의 Tokenizer를 기꺼이 작성하지 않는 한 최종 결과가 최선의 결과 일 수 있습니다. 분석기를 만드는 것은 매우 간단합니다. 토크 나이저를 만드는 것은 자신 만의 문법을 정의하는 것을 의미합니다. 그렇게 간단한 것은 아닙니다.
JapaneseAnalyzer 및 StandardAnalyzer 코드를 살펴 보시고 특히 createComponents
을 호출하십시오.이 코드는 사용자 정의 분석기를 만들기 위해 구현해야합니다. 에서 완전히 임의의 구현입니다
@Override
protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
//For your Tokenizer, you might consider StandardTokenizer, JapaneseTokenizer, or CharTokenizer
Tokenizer tokenizer = new StandardTokenizer(version, reader);
TokenStream stream = new StandardFilter(version, tokenizer);
stream = new JapaneseBaseFormFilter(stream);
stream = new LowerCaseFilter(matchVersion, stream); //In JapaneseAnalyzer, a lowercasefilter comes at the end, further proving I don't know Japanese.
stream = new JapanesePartOfSpeechStopFilter(true, stream, stoptags);
stream = new CJKWidthFilter(stream); //Note this WidthFilter! I believe this does the char width transform you are looking for.
stream = new StopFilter(matchVersion, stream, stopwords);
stream = new JapaneseKatakanaStemFilter(stream);
stream = new PorterStemFilter(stream); //Nothing stopping you using a second stemmer, really.
return new TokenStreamComponents(tokenizer, stream);
}
: 그것은 같이 보일 수
는
StandardTokenizer
당신을 위해 올바른 당신이 결론에 도달 말하지만, 그렇지 않으면 우리는 주로 일본의 필터 세트를 사용하는거야 관심사를 이해하지 못하는 사람도 있지만 더 의미있는 분석기를 구현하는 방향을 제시합니다. 해당 필터 체인에서 필터를 적용하는 순서는 중요하므로 조심해야합니다 (예 : 영문에서는 LowerCaseFilter가 일반적으로 일찍 적용되므로 Stemmers와 같은 항목은 대소 문자를 신경 쓰지 않아도됩니다).