Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java资讯检索程式库。
全文检索服务主要由两大部门构成:索引器及搜索器。索引器主要负责对文件名称及文件内容进行分词,并创建索引表。搜索器负责检索索引表,获取相关内容信息,并显示。
在搜索引擎的构建中,分词器是索引器和搜索器中重要的一部分。分词器的好坏直接影响着搜索效果的优劣。Lucene4.6是当前的最新版本。作为最新版本的Lucene,其自带的中文分词器效果也相当不错。
package com.lm.IndexTxt; import java.io.IOException; 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.cn.smart.SmartChineseAnalyzer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.util.Version; /** * 中文切词 * @author lm */ public class AnalyzerCN_LM { // 分析器类型 基本介绍 // WhitespaceAnalyzer 以空格作为切词标准,不对语汇单元进行其他规范化处理 // SimpleAnalyzer 以非字母符来分割文本信息,并将语汇单元统一为小写形式,并去掉数字类型的字符 // StopAnalyzer 该分析器会去除一些常有a,the,an等等,也可以自定义禁用词 // StandardAnalyzer Lucene内置的标准分析器,会将语汇单元转成小写形式,并去除停用词及标点符号 // CJKAnalyzer 能对中,日,韩语言进行分析的分词器,对中文支持效果一般。 // SmartChineseAnalyzer 对中文支持稍好,但扩展性差 /** * 中文切词 */ @SuppressWarnings("unchecked") public List<String> analyzerCnStr(String str{ List<String> result = new ArrayList(); Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_46,true);//指定当前版本为4.6 try { TokenStream tokenStream = analyzer.tokenStream("field", str); CharTermAttribute term=tokenStream.addAttribute(CharTermAttribute.class); tokenStream.reset(); while( tokenStream.incrementToken() ){ result.add( term.toString() ); } tokenStream.end(); tokenStream.close(); } catch (IOException e1) { e1.printStackTrace(); } return result; } //测试切词 public static void main(String[] args) { AnalyzerCN_LM analyzer = new AnalyzerCN_LM(); List<String> l = analyzer.analyzerCnStr("对于Lucene4.3开发首先摆在我们面前的第一个必须要解决的问题,就是关于中文分词的问题,因为Lucene毕竟是国外的大牛们开发的,显然会比较侧重英文文章,不过还好,在Lucene的下载包里同步了SmartCN的分词器针对中文发行的,每一次Lucene有新的版本发行,这个包同时更新。"); System.out.println(l); } }
分词效果如下:
[对于, lucen, 4, 3, 开发, 首先, 摆, 在, 我们, 面前, 的, 第一, 个, 必须, 要, 解决, 的, 问题, 就, 是, 关于, 中文, 分, 词, 的, 问题, 因为, lucen, 毕竟, 是, 国外, 的, 大, 牛, 们, 开发, 的, 显然, 会, 比较, 侧重, 英文, 文章, 不过, 还, 好, 在, lucen, 的, 下载, 包, 里, 同步, 了, smartcn, 的, 分词, 器, 针对, 中文, 发行, 的, 每, 一, 次, lucen, 有, 新, 的, 版本, 发行, 这个, 包, 同时, 更新]
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注