IK Analyzer 和 lucene结合使用

简介: 特别注意:版本问题(IK Analyzer的版本中注意各个版本的细微区别,小编就是栽在IK Analyzer2012_U5 和IK Analyzer2012FF上了) 版本匹配: 1、IK Analyzer 2012_U5 支持的是 lucene 3.2-3.6版本 2、IK Analyzer2012 FF(你问啥是FF,其实就是For 4.0,在API和功能上保持不变,只是让其支持了Lucene4.0和Solr4.0,让这部分的用户能用起来。

特别注意:版本问题(IK Analyzer的版本中注意各个版本的细微区别,小编就是栽在IK Analyzer2012_U5 和IK Analyzer2012FF上了)

版本匹配:

1、IK Analyzer 2012_U5 支持的是 lucene 3.2-3.6版本

2、IK Analyzer2012 FF(你问啥是FF,其实就是For 4.0,在API和功能上保持不变,只是让其支持了Lucene4.0和Solr4.0,让这部分的用户能用起来。)

下载地址:

GoogleCode :http://code.google.com/p/ik-analyzer/downloads

配置说明:

把 IKAnalyzer中的IKAnalyzer.cfg.xml, ext.dic(如果找不到,可以手动创建一个该文件), stopword.dic文件放到代码的根目录中。

需要在项目中引入:

IKAnalyzer.cfg.xml

IKAnalyzer2012.jar

lucene-core-3.6.0.jar

stopword.dic

使用IK Analyzer实现

  1. import java.io.IOException;  
  2. import java.io.StringReader;  
  3. import org.apache.lucene.analysis.Analyzer;  
  4. import org.apache.lucene.analysis.TokenStream;  
  5. import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;  
  6. import org.wltea.analyzer.lucene.IKAnalyzer;  
  7.   
  8. public class Test2 {  
  9.     public static void main(String[] args) throws IOException {  
  10.         String text="基于java语言开发的轻量级的中文分词工具包";  
  11.         //创建分词对象  
  12.         Analyzer anal=new IKAnalyzer(true);       
  13.         StringReader reader=new StringReader(text);  
  14.         //分词  
  15.         TokenStream ts=anal.tokenStream("", reader);  
  16.         CharTermAttribute term=ts.getAttribute(CharTermAttribute.class);  
  17.         //遍历分词数据  
  18.         while(ts.incrementToken()){  
  19.             System.out.print(term.toString()+"|");  
  20.         }  
  21.         reader.close();  
  22.         System.out.println();  
  23.     }  
  24. }


使用lucene

  1. package com.haha.test;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.StringReader;  
  5.   
  6. import org.wltea.analyzer.core.IKSegmenter;  
  7. import org.wltea.analyzer.core.Lexeme;  
  8.   
  9. public class Test3 {  
  10.       
  11.     public static void main(String[] args) throws IOException {  
  12.         String text="基于java语言开发的轻量级的中文分词工具包";  
  13.         StringReader sr=new StringReader(text);  
  14.         IKSegmenter ik=new IKSegmenter(sr, true);  
  15.         Lexeme lex=null;  
  16.         while((lex=ik.next())!=null){  
  17.             System.out.print(lex.getLexemeText()+"|");  
  18.         }  
  19.     }  
  20.   
  21. }  

运行后结果:

基于|java|语言|开发|的|轻量级|的|中文|分词|工具包|


相关文章
|
JSON 数据格式
vue-codemirror代码编辑器使用方法
vue-codemirror代码编辑器使用方法
vue-codemirror代码编辑器使用方法
|
存储 安全 Java
新增11条新规约!阿里Java开发手册|黄山版,拥抱规范,远离伤害
阿里开发手册是阿里近万名开发同学集体智慧的结晶,以开发视角为中心,详细列举如何开发更加高效、更加容错、更加有协作性,力求知其然,更知其不然,结合正反例,让Java开发者能够提升协作效率、提高代码质量。
3849 0
|
3月前
|
人工智能 JSON 供应链
揭秘电商 API 接口,让多平台库存实时更新不是梦
在电商多平台销售中,库存同步是关键难题。本文解析电商 API 接口如何实现库存实时更新,提升效率、减少超卖,保障客户体验与品牌信誉。
273 0
|
12月前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
831 6
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
350 4
如何让Python爬虫在遇到异常时继续运行
|
人工智能 前端开发 JavaScript
AI+脚本让我的效率翻倍,你也可以试试
本文分享了一名高级软件工程师如何利用 AI 工具(如 VSCode 插件 Codeium、通义灵码,及网页端的通义千问和 GPT-4)提升工作效率的经验。从代码生成、单元测试、脚本生成到文本润色,再到新框架学习,AI 工具在多个方面显著提高了开发效率和代码质量。文章还提供了具体示例和注意事项,帮助读者更好地应用这些工具。
487 1
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
机器学习/深度学习 数据可视化 API
Gymnasium的基本用法
Gymnasium的基本用法
830 0
|
JSON 前端开发 Java
【Java项目】SpringBoot实现一个请求同时上传多个文件和类并附上代码实例
【Java项目】SpringBoot实现一个请求同时上传多个文件和类并附上代码实例
1362 0