首先,也是最重要的一点,你得有 IKAnalyzer 这个jar包
https://pan.baidu.com/s/1bw_pxleG5SCghMSRKNL97A 提取码:ywtg
获得以下文件:
构建项目
1. 导入lucene依赖
<!-- 添加 lucene 支持 -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>7.4.0</version>
</dependency>
2 .引入其他jar包
把 jar 包放在项目文件夹下,其他三个文件要放在项目的 classpath 路径下(普通项目直接放在 src 下就可以,maven放在 resources 下)
三个文件的含义:
hotword.dic
: 扩展词典,可以自行添加关键词
stopword.dic
:扩展停止词典,可以自行添加停用词(敏感词、无意义的词)
IKAnalyzer.cfg.xml
:配置读取扩展文件的路径
这三个文件可以不导入,但要使用扩展功能就需要自己配置,还是要加进来的
3. Add as Library
把 jar 导入项目中,之前只是放在了项目文件下。因为使用到了 jar 包里面的类,所以我已经书写好的代码会报错
右击 jar 包,导入
4. 测试
/**
* 中文分析器 IKAnalyzer
* 查看分析器的分析效果
*/
@Test
public void testIKAnalyzer() throws Exception{
//1.创建一个 Analyzer对象,IKAnalyzer 对象
Analyzer analyzer = new IKAnalyzer();
//2.使用分析器对象的 tokenStream 方法获得一个 TokenStream 对象
TokenStream tokenStream = analyzer.tokenStream("","1\t什么是全文检索java 魔兽世界 警察 \n" + "1.1\t全文检索概念全文检索是将整本书java、整篇文章中的任意内容信息查找出来的检索,java。它可以根据需要获得全文中有关章、节、段、句、词等信息,计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。 ");
//3.向 TokenStream 对象中设置一个引用,相当于是一个指针
CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
//4.调用 TokenStream 对象的 reset方法,如果不调用会抛异常
tokenStream.reset();
//5.使用 while 循环遍历 TokenStream 对象
while(tokenStream.incrementToken()){
System.out.println(charTermAttribute.toString());
}
//6.关闭 TokenStream 对象
tokenStream.close();
}
得到结果(一部分):
加载扩展词典:hotword.dic
加载扩展停止词典:stopword.dic
1
什么
全文
检索
java
魔兽
世界
警察
1.1
结果显示,程序先加载扩展文件或在输出,分词词结果,如果不导入,也是没有问题的,但是就没法自行添加一些关键词了。
比如:魔兽世界,我们知道是一款游戏,可以作为一个关键词;警察我们可以作为一个敏感词,停用
这时候我们只需在,hotword.dic 和 stopword.dic 中添加这两个词,就可以让 IKAnalyzer 分析出我们想要的关键词了
hotword.dic
文件
stopword.dic
文件
再次运行,结果:
复制代码
加载扩展词典:hotword.dic
加载扩展停止词典:stopword.dic
1
什么
全文
检索
java
魔兽世界
魔兽
世界
1.1