我有一个字符串数组
String []str={"This is a demo","only test","nothing more"}
当我使用Lucene对这些数组进行标记时,我只能获得 这个 是 一个 演示 我在下面附上我的java代码:
try {
for(String str2:str ){
TokenStream stream = analyzer.tokenStream("field", new StringReader(str2));
CharTermAttribute termAtt = stream.addAttribute(CharTermAttribute.class);
stream.reset();
while (stream.incrementToken()) {
System.out.println(termAtt.toString());
}
stream.end();
} catch (IOException e) {
e.printStackTrace();
}
}
我需要数组中的每个单词作为标记。
答案 0 :(得分:0)
我运行了你的代码并且关于TokenStream
未被关闭的例外情况。解决这个问题非常简单:
public static void main(String[] args) throws IOException {
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_46);
String []str={"This is a demo","only test","nothing more"};
for (String str2 : str) {
TokenStream stream = analyzer.tokenStream("field", new StringReader(str2));
stream.reset();
CharTermAttribute termAtt = stream.addAttribute(CharTermAttribute.class);
while (stream.incrementToken()) {
System.out.println(termAtt.toString());
}
stream.end();
stream.close();
}
}
以上打印
演示
只有
测试
什么
更
其他词语是停用词。