Lucene学习——IKAnalyzer中文分词(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CYXLZZS/article/details/7999212

一、环境

1、平台:MyEclipse8.5/JDK1.5

2、开源框架:Lucene3.6.1/IKAnalyzer2012

3、目的:测试IKAnalyzer的分词效果

二、开发调试

1、下载框架

    1)IKAnalyzer:http://code.google.com/p/ik-analyzer/downloads/list

       2)Lucene:http://www.apache.org/dist/lucene/java/3.6.1/

2、添加依赖的库

1)添加Lucene:lucene-core-3.6.1.jar

2)添加IKAnalyzer:IKAnalyzer2012.jar

3、配置IKAnalyzer

1)添加配置文件IKAnalyzer.cfg.xml和StopWord词典库stopword.dic文件,把这两个文件放到src目录下,也就是classpath路径下

4、编写测试程序,测试代码如下

package org.cyxl.lucene.test;

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;

public class IKAnalyzerTest {
	public static void main(String[] args) {
		String keyWord = "IKAnalyzer的分词效果到底怎么样呢,我们来看一下吧";
		//创建IKAnalyzer中文分词对象
		IKAnalyzer analyzer = new IKAnalyzer();
		// 使用智能分词
		analyzer.setUseSmart(true);
		// 打印分词结果
		try {
			printAnalysisResult(analyzer, keyWord);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 打印出给定分词器的分词结果
	 * 
	 * @param analyzer
	 *            分词器
	 * @param keyWord
	 *            关键词
	 * @throws Exception
	 */
	private static void printAnalysisResult(Analyzer analyzer, String keyWord)
			throws Exception {
		System.out.println("["+keyWord+"]分词效果如下");
		TokenStream tokenStream = analyzer.tokenStream("content",
				new StringReader(keyWord));
		tokenStream.addAttribute(CharTermAttribute.class);
		while (tokenStream.incrementToken()) {
			CharTermAttribute charTermAttribute = tokenStream
					.getAttribute(CharTermAttribute.class);
			System.out.println(charTermAttribute.toString());

		}
	}
}

5、结果如下

[IKAnalyzer的分词效果到底怎么样呢,我们来看一下吧]分词效果如下
加载扩展停止词典:stopword.dic
ikanalyzer
的
分词
效果
到底
怎么样
呢
我们
来看
一下
吧

6、扩展自己的词典和StopWord

       1)在src目录下,新建自身的词典文件ext.dic,输入词如下(注意第一行留空,不知道为什么)

分词效果

       2)在src目录下,新建自身的StopWord文件chinese_stopword.dic(也是第一行留空,疑惑中)

吧
呢
来
的

 

       3)配置IKAnalyzer配置文件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">ext.dic;</entry> 
	
	<!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry> 
	
</properties>

      4)配置好后测试结果如下

[IKAnalyzer的分词效果到底怎么样呢,我们来看一下吧]分词效果如下
加载扩展词典:ext.dic
加载扩展停止词典:stopword.dic
加载扩展停止词典:chinese_stopword.dic
ikanalyzer
分词效果
到底
怎么样
我们
来看
一下

三、总结

1、IKAnalyzer分词效果基本还是可以的,可以根据我们自身的项目业务扩展自己的词典和StopWord

2、下面就结果中文分词和Lucene将上一篇的搜索引擎雏形加以修改,让它适合中文网站

展开阅读全文

没有更多推荐了,返回首页