Lucene中文分词Paoding
2015-06-23 16:47
281 查看
Paoding中文分词库是一个使用Java开发的基于Lucene4.x的分词器,可结合到Lucene应用中的,为互联网、企业内部网使用的中文搜索引擎分词组件。Paoding填补了国内中文分词方面开源组件的空白,致力于此并希翼成为互联网网站首选的中文分词开源组件。 Paoding中文分词追求分词的高效率和用户良好体验。
Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。
高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。采用基于 不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。能够对未知的词汇进行合理解析。
项目地址:http://git.oschina.net/zhzhenqin/paoding-analysis
测试实例:
下载最新项目(当前版本2.0.4):
1.将项目中的dic复制到测试工程的根目录下,词典目录默认classpath:dic下,在paoding-dic-home.properties中配置
2.paoding-analysis-2.0.4.jar放在工程的lib下
项目pom配置:
1.在项目中使用paoding分词
2.Paoding Analyzer 庖丁解牛分词
3.Paoding分词器for Lucene4.x-Solr4.x
Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。
高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。采用基于 不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。能够对未知的词汇进行合理解析。
项目地址:http://git.oschina.net/zhzhenqin/paoding-analysis
测试实例:
下载最新项目(当前版本2.0.4):
1.将项目中的dic复制到测试工程的根目录下,词典目录默认classpath:dic下,在paoding-dic-home.properties中配置
2.paoding-analysis-2.0.4.jar放在工程的lib下
项目pom配置:
<properties> <lucene.version>4.6.0</lucene.version> </properties> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId> org.apache.lucene</groupId> <artifactId>lucene-core</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-queryparser</artifactId> <version> ${lucene.version}</version> </dependency> <dependency> <groupId> org.apache.lucene</groupId> <artifactId>lucene-highlighter</artifactId> <version> ${lucene.version}</version> </dependency> <dependency> <groupId>net.paoding</groupId> <artifactId>paoding-analysis</artifactId> <version>2.0.4</version> <scope>system</scope> <systemPath>${project.basedir}/lib/paoding-analysis-2.0.4.jar</systemPath> </dependency> </dependencies>测试实例:
package cn.slimsmart.lucene.paoding.demo; import java.io.StringReader; import net.paoding.analysis.analyzer.PaodingAnalyzer; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field.Store; import org.apache.lucene.document.TextField; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.store.Directory; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.util.Version; public class Test { public static void main(String[] args) throws Exception { String text="生成analyzer实例 将项目中的dic复制到工程的classpath下,默认配置"; testSplitChinese(text); System.out.println("=============="); testDemo(text); } /** * 分词测试 */ public static void testSplitChinese(String text) throws Exception{ // 生成analyzer实例 将项目中的dic复制到工程的根下,若修改paoding.dic.home,更换位置 Analyzer analyzer = new PaodingAnalyzer(); // 取得Token流 TokenStream tokenizer = analyzer.tokenStream("text", new StringReader(text)); tokenizer.reset(); // 添加工具类 注意:以下这些与之前lucene2.x版本不同的地方 CharTermAttribute offAtt = (CharTermAttribute) tokenizer.addAttribute(CharTermAttribute.class); // 循环打印出分词的结果,及分词出现的位置 while (tokenizer.incrementToken()) { System.out.print(offAtt.toString() + "\t"); } tokenizer.close(); } private static Document createDocument(String title, String content) { Document doc = new Document(); doc.add(new TextField("title", title, Store.YES)); doc.add(new TextField("content", content, Store.YES)); return doc; } /** * lucene简单实例 */ public static void testDemo(String text) throws Exception{ Analyzer analyzer = new PaodingAnalyzer(); Directory idx = new RAMDirectory(); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_46,analyzer); IndexWriter writer = new IndexWriter(idx, iwc); writer.addDocument(createDocument("维基百科:关于中文维基百科", "维基百科:关于中文维基百科")); writer.commit(); IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(idx)); System.out.println("命中个数:"+searcher.search(new QueryParser(Version.LUCENE_46, "title", analyzer).parse("title:'维基'"), 10).totalHits); writer.close(); } }参考文章:
1.在项目中使用paoding分词
2.Paoding Analyzer 庖丁解牛分词
3.Paoding分词器for Lucene4.x-Solr4.x
相关文章推荐
- SQL Server全文检索查询浅析
- java Lucene 中自定义排序的实现
- 从零开始使用Hubbledotnet进行全文搜索-前言
- zg手册 之 Mysql 开发(1)-- 中文全文检索插件开发
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用2
- Lucene整合"庖丁解牛"中文分词包
- JAVA lucene全文检索工具包的理解与使用 分享
- Lucene:基于Java的全文检索引擎简介
- 使用Lucene 3.3.0的结构遍历TokenStream的内容.
- hadoop+lucene+web 综合小demo
- Lucene 学习笔记(一)
- lucene集成IK实现中文分词检索
- lucene4.2 + IKanalyzer2012FF_u1简单示例 .
- lucene solr在tomcat中的配置
- Lucene 3.6 contrib 学习总结
- lucene全文检索学习记录,附带源码——三种实现,超全超细致
- elasticsearch安装与调试
- VSB2008网站群内容管理系统(CMS系统)
- Lucene 2.0.0下载安装及测试
- ElasticSearch+Solr几个案例笔记