1. 程式人生 > >Lucene之中文庖丁解牛(mmseg)分詞器-yellowcong

Lucene之中文庖丁解牛(mmseg)分詞器-yellowcong

庖丁解牛分詞器,分詞器和Lucene的版本需要注意,有可能有衝突,報錯,我最開始是1.8.5的mmseg4j和一個lucene有衝突,後來,換了Mmseg4j版本後,就好了

下載地址

#這個是包含有字典的,我們要裡面的字典,不需要jar包
http://yellowcong.qiniudn.com/mmseg4j-1.8.5.zip

案例

演示了標準分詞器和中文分詞器處理後,詞彙的效果

package com.yellowcong.index;

import java.io.File;
import java.io.IOException;
import java.io.StringReader;

import
org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.util.Version; import com.chenlb.mmseg4j.Dictionary; import com.chenlb.mmseg4j.analysis.MMSegAnalyzer; /** * 建立使用者:狂飆的yellowcong<br/> * 建立日期:2017年12月3日<br/> * 建立時間:下午4:44:47<br/> * 機能概要: */
public class Demo1 { public static void main(String[] args) throws Exception { String dicPath = getDicPath(); // 獲取到中文分詞了 MMSegAnalyzer analyzer = new MMSegAnalyzer(new File(dicPath)); String content = "我是中國人"; //中文分詞 System.out.println("-------------------中文分詞----------------------"
); dispalyToken(analyzer, content); //標準分詞器 System.out.println("-------------------標準分詞器----------------------"); StandardAnalyzer stand = new StandardAnalyzer(Version.LUCENE_45); dispalyToken(stand, content);; } /** * 建立使用者:狂飆的yellowcong<br/> * 建立日期:2017年12月3日<br/> * 建立時間:下午9:20:13<br/> * 機能概要: 檢視分詞資訊 * @param analyzer * @param content 需要分詞的類容 * @throws Exception */ public static void dispalyToken(Analyzer analyzer, String content) throws Exception { TokenStream stream = analyzer.tokenStream("content", new StringReader(content)); // 獲取分詞資訊 CharTermAttribute cta = stream.addAttribute(CharTermAttribute.class); stream.reset(); while (stream.incrementToken()) { System.out.println("[" + cta.toString() + "]"); } } /** * 建立使用者:狂飆的yellowcong<br/> * 建立日期:2017年12月3日<br/> * 建立時間:下午4:50:16<br/> * 機能概要:獲取字典的存放地址 * * @return */ public static String getDicPath() { //獲取data目錄,這樣就可以獲取到目錄下所有的字典了 String dicPath = Demo1.class.getClassLoader().getResource("data").getFile(); return dicPath; } }

執行結果

中文分詞就有不是一個 一個字元了,標準分詞器對於中問來說,完犢子
這裡寫圖片描述

環境搭建

專案結構

其中wrods-my.dic是自己定義的分詞字典
這裡寫圖片描述

pom.xml

對於mmseg的版本和lucene的版本有要求,不然,就有衝突

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>yellowcong</groupId>
    <artifactId>day12_02</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>day12_02</name>
    <url>http://maven.apache.org</url>

    <!-- 配置國內比較快的 阿里雲的Maven倉庫 -->
    <repositories>
        <repository>
            <id>aliyunmaven</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <lucene.version>4.5.1</lucene.version>
        <mmseg4j.version>1.9.1</mmseg4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>

        <!-- lucene核心包 -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <!--QueryParser 查詢類-->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queryparser</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <!-- 分詞器 -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <!-- 高亮顯示 -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-highlighter</artifactId>
            <version>${lucene.version}</version>
        </dependency>

        <!-- 庖丁解牛分詞器 -->
        <dependency>
            <groupId>com.chenlb.mmseg4j</groupId>
            <artifactId>mmseg4j-core</artifactId>
            <version>${mmseg4j.version}</version>
        </dependency>
        <dependency>
            <groupId>com.chenlb.mmseg4j</groupId>
            <artifactId>mmseg4j-analysis</artifactId>
            <version>${mmseg4j.version}</version>
        </dependency>
    </dependencies>
</project>