大家好,又见面了,我是你们的朋友全栈君。
一、展示分词内容
package com.wsy;
import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.util.Version;
import java.io.IOException;
import java.io.StringReader;
public class AnalyzerUtils {
public static void displayToken(String string, Analyzer analyzer) {
try {
// 通过分词器获取TokenStream
TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(string));
// TokenStream是一种流,我们要获取流中的东西,就需要一个“碗”,我们将CharTermAttribute比作这个“碗”
// 当TokenStream遍历的时候,这个“碗”也跟着走,我们把“碗”放到流中就是方便获取流中的数据
CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
while (tokenStream.incrementToken()) {
System.out.print("[" + charTermAttribute + "]");
}
System.out.println();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Analyzer analyzer1 = new StandardAnalyzer(Version.LUCENE_35);
Analyzer analyzer2 = new StopAnalyzer(Version.LUCENE_35);
Analyzer analyzer3 = new SimpleAnalyzer(Version.LUCENE_35);
Analyzer analyzer4 = new WhitespaceAnalyzer(Version.LUCENE_35);
String string1 = "I am from liaocheng, it is my hometown. My name is Wang Shaoyang.My QQ number is 872452093.";
String string2 = "我来自山东聊城,我的名字是王劭阳。";
AnalyzerUtils.displayToken(string1, analyzer1);
AnalyzerUtils.displayToken(string1, analyzer2);
AnalyzerUtils.displayToken(string1, analyzer3);
AnalyzerUtils.displayToken(string1, analyzer4);
AnalyzerUtils.displayToken(string2, analyzer1);
AnalyzerUtils.displayToken(string2, analyzer2);
AnalyzerUtils.displayToken(string2, analyzer3);
AnalyzerUtils.displayToken(string2, analyzer4);
}
}
通过这个例子,可以看到对于一个字符串的分词结果,使用不同的分词器对于分词的效果是不同的,所以实际开发的时候,要根据需要使用合适的分词器才行。
二、总结
在displayToken()方法中,有一个非常重要的思想,就是向流中添加attribute,之后通过attribute来查看流中的内容,这在Lucene中非常重要,这里举了一个很形象的例子,把TokenStream比作水流,为了获取水流,我们需要向水流中放置一个碗,通过碗来获取到水流,也就获取到了数据,这一块一定要理解透。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163095.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...