天天看點

IKAnalyzer中文分析器的使用

首先,也是最重要的一點,你得有 IKAnalyzer 這個jar包

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

獲得以下檔案:

IKAnalyzer中文分析器的使用

建構項目(普通項目或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:配置讀取擴充檔案的路徑

    這三個檔案可以不導入,但要使用擴充功能就需要自己配置,還是要加進來的

  

IKAnalyzer中文分析器的使用

  2.把 jar 導入項目中,之前隻是放在了項目檔案下。因為使用到了 jar 包裡面的類,是以我已經書寫好的代碼會報錯

  右擊 jar 包,導入

  

IKAnalyzer中文分析器的使用

   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 檔案

IKAnalyzer中文分析器的使用

 stopword.dic 檔案

IKAnalyzer中文分析器的使用

 再次運作,結果:

加載擴充詞典:hotword.dic
加載擴充停止詞典:stopword.dic
1
什麼
全文
檢索
java
魔獸世界
魔獸
世界
1.1      

完成