IK分词器 IKAnalyzer 简单demo
所用IKAnalyzer:IK-Analyzer-2012FF 百度云:http://pan.baidu.com/s/1bne9UKf
实例代码:
package com.test.ik.analyzer; import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List; import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.cfg.Configuration;
import org.wltea.analyzer.cfg.DefaultConfig;
import org.wltea.analyzer.dic.Dictionary;
import org.wltea.analyzer.lucene.IKAnalyzer; /**
* 文件名称: IkAnalyzer<br>
* 文件描述: IkAnalyzer demo<br>
* 版权所有: jstarseven<br>
* 完成日期: 2015-10-20 下午4:18:54<br>
*
* @see
* @param
* @since JDK1.6
*/
public class IkAnalyzer { public static void main(String[] args) throws Exception { // 检索内容
String text = "据说WWDC要推出iPhone6要出了?与iPhone5s土豪金相比华夏怎样呢?神圣纪事,天空之城,囧囧@2014巴西世界杯 test中文"
+ "我在漫长的纠结与反省中觉悟到时间其实改变不了什么的,至少对于放弃一种好的而去相信一种坏的甚至慵懒的事物是这样的。我曾经朝九晚五,不会去日晒雨淋,坐在舒适的办公环境里,友好的同事关系,虽然工资不高,生活却也是很惬意的,如果习惯了,时间它能改变些什么呢?我不知道,也不曾去幻想,因为眼前的景物足够我安静的睡去,做足了美梦,只觉得哪怕是睁开眼睛都是件疲惫的事情,都是一件多余的事情,不必去动脑经想生活的意义是什么?";
List<String> list = new ArrayList<String>();
list.add("test中文");
// 尚未初始化,因为第一次执行分词的时候才会初始化,为了在执行分此前手动添加额外的字典,需要先手动的初始化一下
Configuration configuration = DefaultConfig.getInstance();
// 主字典路径
String mainDictionaryPath = configuration.getMainDictionary();
// 量词字典路径
String quantifierDictionaryPath = configuration.getQuantifierDicionary();
// 获取停止词(stopword)字典路径列表,可一次返回多个停止词词典
List<String> stopList = configuration.getExtStopWordDictionarys();
// 获取扩展字典路径列表,可一次返回多个扩展词典
List<String> extlist = configuration.getExtDictionarys();
System.out.println(mainDictionaryPath);
System.out.println(quantifierDictionaryPath);
for (String word : extlist) {
System.out.println(word);
}
for (String word : stopList) {
System.out.println(word);
}
// DictionaryIK 分词器的词典对象
// initial 初始化字典实例 字典采用单例模式,一旦初始化,实例就固定 注意该方法只能调用一次
Dictionary.initial(configuration);
// getSingleton 获取初始化完毕的字典单例
// addWords 加载用户扩展的词汇列表到 IK 的主词典中,增加分词器的可识别词语
Dictionary.getSingleton().addWords(list);
// disableWords(Collection<String> words) 屏蔽词典中的词元 // 创建分词对象 true为smart模式
Analyzer analyzer = new IKAnalyzer(true);
StringReader reader = new StringReader(text); TokenStream ts = analyzer.tokenStream("", reader);
CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);
// 遍历分词数据
try {
while (ts.incrementToken()) {
System.out.print(term.toString() + "|");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
reader.close();
}
}
}
运行效果:
org/wltea/analyzer/dic/main2012.dic
org/wltea/analyzer/dic/quantifier.dic
ext0.dic
ext1.dic
stopword.dic
加载扩展词典:ext0.dic
加载扩展词典:ext1.dic
加载扩展停止词典:stopword.dic
据说|wwdc|要|推出|iphone6|要|出了|与|iphone5s土豪金|相比|华夏|怎样|呢|神圣纪事|天空之城|囧囧|2014|巴西世界杯|test中文|我|在|漫长的纠结|与|反省|中|觉悟|到|时间|其实|改变|不|了|什么的|至少|对于|放弃|一种|好|的|而去|相信|一种|坏|的|甚至|慵懒|的|事物|是|这样|的|我|曾经|朝九晚五|不会|去|日晒雨淋|坐在|舒适|的|办公|环境|里|友好|的|同事|关系|虽然|工资|不高|生活|却|也是|很|惬意|的|如果|习|惯了|时间|它能|改|变些|什么|呢|我|不知道|也|不曾|去|幻想|因为|眼前|的|景物|足够|我|安静|的|睡去|做足了美梦|只|觉得|哪怕是|睁开眼睛|都是|件|疲惫|的|事情|都是|一件|多余|的|事情|不|必去|动脑|经|想|生活|的|意义|是什么|
配置文件:IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典-->
<entry key="ext_dict">ext0.dic;ext1.dic;</entry> <!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry> </properties>
文件路径:
扩展字典:
ext0.dic:
巴西世界杯
iPhone5s土豪金
ext1.dic:
神圣纪事
天空之城
囧囧
漫长的纠结
朝九晚五
美梦
觉悟
做足了美梦
-END-
IK分词器 IKAnalyzer 简单demo的更多相关文章
- Lucene介绍及简单入门案例(集成ik分词器)
介绍 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和 ...
- Solr(四)Solr实现简单的类似百度搜索高亮功能-1.配置Ik分词器
配置Ik分词器 一 效果图 二 实现此功能需要添加分词器,在这里使用比较主流的IK分词器. 1 没有配置IK分词器,用solr自带的text分词它会把一句话分成单个的字. 2 配置IK分词器,的话它会 ...
- solr8.0 ik中文分词器的简单配置(二)
下载ik分词器,由于是solr8.0,一些ik分词器版本可能不兼容,以下是个人亲测可行的版本 ik分词器下载 然后将解压出来的两个jar包放到以下路径: 其它的三个文件放到以下路径: 如果没有clas ...
- IK分词器 原理分析 源码解析
IK分词器在是一款 基于词典和规则 的中文分词器.本文讲解的IK分词器是独立于elasticsearch.Lucene.solr,可以直接用在java代码中的部分.关于如何开发es分词插件,后续会有文 ...
- Solr和IK分词器的整合
IK分词器相对于mmseg4J来说词典内容更加丰富,但是没有mmseg4J灵活,后者可以自定义自己的词语库.IK分词器的配置过程和mmseg4J一样简单,其过程如下: 1.引入IKAnalyzer.j ...
- Lucene的中文分词器IKAnalyzer
分词器对英文的支持是非常好的. 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好. 国人林良益写的IK Ana ...
- 如何开发自己的搜索帝国之安装ik分词器
Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词,我是中国人 不能简单的分成一个个字,我们更希望 “中国人”,“中国”,“我”这样的分词,这样我们就需要 ...
- IK分词器原理与源码分析
原文:http://3dobe.com/archives/44/ 引言 做搜索技术的不可能不接触分词器.个人认为为什么搜索引擎无法被数据库所替代的原因主要有两点,一个是在数据量比较大的时候,搜索引擎的 ...
- IK分词器插件elasticsearch-analysis-ik 6.1.1
http://88250.b3log.org/full-text-search-elasticsearch#b3_solo_h3_0 IK分词器插件 (1)源码 https://github.com/ ...
随机推荐
- SQL点滴34—SQL中的大小写
原文:SQL点滴34-SQL中的大小写 默认情况下,SQL Server不区分大小写,如果数据表TEST的TNAME列中有数据“abcd”和“Abcd”, 如果使用查询语句:select * from ...
- Gimp教程:多图层多渐变的文字效果
这个教程是我在国外的视频网站上学的,制作这个教程也很久了,今天在网盘翻看到这个截图版本,正好整理到博客,方便管理.记得当时花了一下午的时间来边做边截图修改制作,个人觉得这个教程还是很好的,原作者很有创 ...
- ASP.NET中XML转JSON的方法
原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. X ...
- Ubuntu 14.04 字体设置
ubuntu 14.04消息公布后,我迫不及待地安装和使用.不知道怎么搞的,整个系统彻底改变了字体.有罪,看. 后来.听说文泉驿米黑效果不错.就试了一下,确实还行. 以下是设置方法: 1.安装文泉驿米 ...
- 深入浅出SQL注入
原文:深入浅出SQL注入 之前在做学生信息管理系统和机房收费系统的时候,对于SQL注入的问题已经是司空见惯,但是并没有真正的地形象生动的理解SQL注入到底是什么玩意儿.直到这次做牛腩才在牛老师的举例之 ...
- 简话ASP.NET Web API
简话ASP.NET Web API 在vs2012中,我们很容易在根据选择的ASP.NET MVC Web应用程序来新建一个Web API应用,聪明的你一定想见得到,Web API和MVC有着某种联系 ...
- PushSharp的使用
PushSharp的使用 最近做公司的一个项目.一旦数据库插入新的消息,就要通知服务器,将这些新的消息推送给苹果客户端,以前我们的项目中有人做过这个功能,无奈做的有点复杂,而且代码没注释,我压根就没看 ...
- Ninject依赖注入——构造函数、属性、方法和字段的注入
Ninject依赖注入——构造函数.属性.方法和字段的注入(三) 1.Ninject简介 Ninject是基于.Net平台的依赖注入框架,它能够将应用程序分离成一个个高内聚.低耦合(loosely-c ...
- NET那点不为人知的事
ASP.NET那点不为人知的事(一) 我们上网时,在浏览器地址输入网址:Http://www.cnblogs.com,按下回车,一张网页就呈现在我们眼前.这究竟发生了什么?对于一名优秀的Progr ...
- js模版引擎handlebars.js实用教程
js模版引擎handlebars.js实用教程 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的 ...