Lucene之中文分词器(IK-Ananlyzer)-yellowcong
2017-12-03 21:50
218 查看
IK分词全名为IK Analyzer,是由java编写的中文分词工具包,目前在lucene以及solr中用的比较多,采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和智能分词两种切分模式
ikanalyzer里面内置字典
![](https://img-blog.csdn.net/20171203214819789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVsbGxvd2Nvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20171203214521794?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVsbGxvd2Nvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20171203214647997?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVsbGxvd2Nvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
http://blog.csdn.net/zhu_tianwei/article/details/46607421
下载地址
https://github.com/linvar/IKAnalyzer
ikanalyzer里面内置字典
案例
package com.yellowcong.index; import java.io.File; 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.wltea.analyzer.lucene.IKAnalyzer; import com.chenlb.mmseg4j.analysis.MMSegAnalyzer; /** * 创建用户:狂飙的yellowcong<br/> * 创建日期:2017年12月3日<br/> * 创建时间:下午9:37:38<br/> * 机能概要: */ public class Demo2 { public static void main(String[] args) throws Exception { //查看MMesj分词器 String dicPath = getDicPath(); // 获取到中文分词了 MMSegAnalyzer mmseg = new MMSegAnalyzer(new File(dicPath)); String content = "我是中国人"; System.out.println("----------MMSeg分词器--------------"); dispalyToken(mmseg, content); //定义IkAnalyzer分词器 Analyzer analyzer = new IKAnalyzer(true); //查看分词效果 System.out.println("------------IkAnalyzer分词器-----------"); dispalyToken(analyzer, 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() { String dicPath = Demo1.class.getClassLoader().getResource("data").getFile(); return dicPath; } }
运行结果
环境搭建
工程结构
pom.xml
<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> <!-- ikanalyzer 分词器 --> <dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artifactId> <version>2012_u6</version> </dependency> </dependencies> </project>
参考文章
http://blog.csdn.net/a925907195/article/details/41826363http://blog.csdn.net/zhu_tianwei/article/details/46607421
相关文章推荐
- Lucene5中编写自定义同义词分词器(基于IK中文分词器)
- elasticsearch-2.1.1 安装中文分词器 elasticsearch-analysis-ik
- 《solr笔记》Linux下tomcat7+solr-4.7.0+Ik中文分词器安装
- Solr之IKAnalyzer中文分词器-yellowcong
- 当前几个主要的Lucene中文分词器的比较
- 配置Solr中文分词器IK以及ansj,支持动态修改用户词库。
- solr7.2环境搭建和配置ik中文分词器
- 当前几个主要的Lucene中文分词器的比较
- 中文分词器IKAnalyzer——IKQueryParser主类分析
- Elasticsearch之中文分词器插件es-ik的自定义词库
- 当前几个主要的Lucene中文分词器的比较
- Elasticsearch 中文分词器 IK 配置和使用
- solr 6.2.0系列教程(二)IK中文分词器配置及添加扩展词、停止词、同义词
- 当前几个主要的Lucene中文分词器的比较
- lucene IKAnalyzer中文分词器学习(1)
- ElasticSearch速学 - IK中文分词器 、elasticdump数据导出导入、字段分词
- IK中文分词器原理
- 中文分词—基于Lucene的分词器—支持中英文混合词
- lucene 中文分词器中的一个Bug
- Solr下使用IK-Analyzer实现中文分词器的配置详情