自定义分词:
package test;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.junit.Test;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class IKTest {
@Test
public void testIKAnalyzer() throws Exception {
String keyWord = "2012年欧洲四国赛中国春晓油田中国航母日本中国钓鱼岛";
IKAnalyzer analyzer = new IKAnalyzer(true);
// 打印分词结果
printAnalysisResult(analyzer, keyWord);
}
public static void main(String[] args) {
String str = "最希望从企业得到的是独家的内容或销售信息,获得打折或促销信息等;最不希望企业进行消息或广告轰炸及访问用户的个人信息等。这值得使用社会化媒体 的企业研究";
IKAnalysis(str);
}
/**
* 打印出给定分词器的分词结果
*
* @param analyzer
* 分词器
* @param keyWord
* 关键词
* @throws Exception
*/
private void printAnalysisResult(Analyzer analyzer, String keyWord)
throws Exception {
System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName());
TokenStream tokenStream = analyzer.tokenStream("content",
new StringReader(keyWord));
tokenStream.addAttribute(CharTermAttribute.class);
while (tokenStream.incrementToken()) {
CharTermAttribute charTermAttribute = tokenStream
.getAttribute(CharTermAttribute.class);
System.out.println(charTermAttribute + "--");
}
}
public static String IKAnalysis(String str) {
StringBuffer sb = new StringBuffer();
try {
// InputStream in = new FileInputStream(str);//
byte[] bt = str.getBytes();// str
InputStream ip = new ByteArrayInputStream(bt);
Reader read = new InputStreamReader(ip);
IKSegmenter iks = new IKSegmenter(read, true);
Lexeme t;
while ((t = iks.next()) != null) {
sb.append(t.getLexemeText() + " , ");
}
sb.delete(sb.length() - 1, sb.length());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sb.toString());
return sb.toString();
}
}
注意点:
1、 IKAnalyzer.cfg.xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">mydic.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry>
</properties>
2、 自定义的词典和stopWords文件位置要放正确,简单的就是放在IKAnalyzer.cfg.xml同级目录,在classes文件夹下即可.
后缀名.dic的词典文件,必须如使用文档里所说的 无BOM的UTF-8编码保存的文件。如果不确定什么是
3、用Notepad++更改词库后保存,要刷新工程才会生效。