В базе данных SQL Server 2008 у меня есть таблица с полем Date типа данных date
и Поле времени типа данных время
. В таблице есть некоторые данные.
import org.apache.lucene.analysis. *;
import org.apache.lucene.util.Version; открытый класс MyAnalyzer расширяет Analyzer {public ...
Учитывая, что код работает под управлением Lucene 3.0.1
import java.io.*;
import org.apache.lucene.analysis.*;
import org.apache.lucene.util.Version;
public class MyAnalyzer extends Analyzer {
public TokenStream tokenStream(String fieldName, Reader reader) {
return
new StopFilter(
true,
new StandardTokenizer(Version.LUCENE_30, reader),
StopAnalyzer.ENGLISH_STOP_WORDS_SET
);
}
private static void printTokens(String string) throws IOException {
TokenStream ts = new MyAnalyzer().tokenStream("default", new
StringReader(string));
TermAttribute termAtt = ts.getAttribute(TermAttribute.class);
while(ts.incrementToken()) {
System.out.print(termAtt.term());
System.out.print(" ");
}
System.out.println();
}
public static void main(String[] args) throws IOException {
printTokens("one_two_three"); // prints "one two three"
printTokens("four4_five5_six6"); // prints "four4_five5_six6"
printTokens("seven7_eight_nine"); // prints "seven7_eight nine"
printTokens("ten_eleven11_twelve"); // prints "ten_eleven11_twelve"
}
}
, я могу понять, почему one_two_three
и four4_five5_six6
токенизируются как есть , как это объясняется в заголовке Javadoc класса StandardTokenizer . Но два других случая более тонкие, и я
не совсем уверен, что у меня есть идея.
Q1: Если появление 7
после семь
делает его объединенным токеном с восьмеркой
но отдельно от девять
, почему десять
приклеено к одиннадцать11
?
Q2: Есть ли какой-нибудь стандартный и / или простой способ сделать StandardTokenizer
всегда
разделить на подчеркивание?