2006 年に、誰かがコードをApache Luceneプロジェクトに提供して、これを機能させました。
彼らの (Java で書かれた) アプローチは、BreakIteratorクラスを使用しgetWordInstance()
て、タイ語の辞書ベースの単語反復子を取得することでした。また、 ICU4Jプロジェクトへの依存関係が明示されていることにも注意してください。コードの関連セクションを以下に貼り付けました。
private BreakIterator breaker = null;
private Token thaiToken = null;
public ThaiWordFilter(TokenStream input) {
super(input);
breaker = BreakIterator.getWordInstance(new Locale("th"));
}
public Token next() throws IOException {
if (thaiToken != null) {
String text = thaiToken.termText();
int start = breaker.current();
int end = breaker.next();
if (end != BreakIterator.DONE) {
return new Token(text.substring(start, end),
thaiToken.startOffset()+start,
thaiToken.startOffset()+end, thaiToken.type());
}
thaiToken = null;
}
Token tk = input.next();
if (tk == null) {
return null;
}
String text = tk.termText();
if (UnicodeBlock.of(text.charAt(0)) != UnicodeBlock.THAI) {
return new Token(text.toLowerCase(),
tk.startOffset(),
tk.endOffset(),
tk.type());
}
thaiToken = tk;
breaker.setText(text);
int end = breaker.next();
if (end != BreakIterator.DONE) {
return new Token(text.substring(0, end),
thaiToken.startOffset(),
thaiToken.startOffset()+end,
thaiToken.type());
}
return null;
}