IKAnalyzer中文分析器的使用

给你一囗甜甜゛ 提交于 2020-02-12 17:32:36

首先,也是最重要的一点,你得有 IKAnalyzer 这个jar包

https://pan.baidu.com/s/1bw_pxleG5SCghMSRKNL97A  提取码:ywtg 

获得以下文件:

构建项目(普通项目或maven,我这里使用了maven项目)

  0.导入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>

 

  1.把 jar 包放在项目文件夹下,其他三个文件要放在项目的 classpath 路径下(普通项目直接放在 src 下就可以,maven放在 resources 下)

    三个文件的含义:

    hotword.dic: 扩展词典,可以自行添加关键词

    stopword.dic:扩展停止词典,可以自行添加停用词(敏感词、无意义的词)

    IKAnalyzer.cfg.xml:配置读取扩展文件的路径

    这三个文件可以不导入,但要使用扩展功能就需要自己配置,还是要加进来的

  

 

  2.把 jar 导入项目中,之前只是放在了项目文件下。因为使用到了 jar 包里面的类,所以我已经书写好的代码会报错

  右击 jar 包,导入

  

 

   3.编写代码 

    /**
     *  中文分析器 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

 

完成

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!