- 浏览: 379979 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (215)
- ubuntu (27)
- 虚拟机 (13)
- 数据库 (29)
- JAVA (40)
- 搜索 (23)
- 开发工具 (2)
- 产品 (2)
- 工具 (1)
- 应用服务器 (5)
- linux (17)
- log (1)
- 多线程 (3)
- 异常 (1)
- shell (6)
- 12306 ;互联网 (1)
- 持续集成&Hudson (4)
- js (1)
- JAVA OR-Map (1)
- 漏洞 (1)
- svn (1)
- MAVEN (3)
- 架构 (1)
- windows (1)
- json (1)
- web (3)
- jenkins (2)
- iptables (2)
- JAVA ssh (0)
- 项目管理 (1)
- tomcat (1)
- 安全 (1)
- 数据库 mysql (1)
- 性能 (1)
最新评论
-
sbwfgihc:
怎么用的啊,
<转>mysql 树查询语句 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
songsove:
请问您qq多少
solr 对拼音搜索和拼音首字母搜索的支持 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
norain1988:
这样就可以实现相关搜索了吗
solr 百度相关搜索类似功能的实现
Paoding分词过程中词典是相关重要的一环,其特性主要有:
(1)多词典支持,词典功能区分;
(2)词典加载入内存使用,使用预加载和Lazy Mode模式;
(3)根据分词模式,对词典进行二次编译;
(4)词典变更侦测,当词典文件发生变化时,可以重新加载词典。
1.1 词典类型庖丁中有多种词典,每一种词典在分词过程中都不有同的意义。主要的词典及其功能如下:
(1)VocabularyDictionary:分词主要的词典,最后构建索引的索引项(term\dictionary);
(2)ConfucianFamilyNamesDictionary:中文姓氏词典,用于识别特殊词;
(3)NoiseCharactorsDictionary:停止单字词典,该词典中的词不用于构建索引项;
(4)NoiseWordsDictionary:停止词语词典,该词典中的词不用于构建索引项;
(5)UnitsDictionary:计量单位词典,该词典中的词主要是一些计量单位。
paoding将多个词典进行组合进行使用。
1.2 词典加载流程
1) PaodingAnalyzer初始化时需要构建Paoding对象;
2) 先由PaodingMaker的readUnCompiledDictionaries调用FileDictionaries;
3) 获取各种属性和词典编译类;
4) 读取未编译词典属性、编译词典(FileDictionaries的一些方法中才真正的加载了词项、CompiledFileDictionaries中调用读取词项);
5) 使用编译后的词典;
6) 为词典设置变更监听器。
1.3 词典文件格式词典文本一般为纯文本格式,notepad将文件保存为unitcode或utf-8时会在文件开头保存bom字符串,notepad根据是否有bom来识别该文件是否是utf-8编码存储的(详情参见 ref:http://www.w3.org/International/questions/qa-utf8-bom)。而庖丁字典需要将这个字符从词典中去掉。
词典内格式是一行一个词。
1.4 读取词典文件如果需要编译,那么读取词典文件是在词典编译前进行。如果不需要编译,则先不加载。
FileDictionaries的一些方法中才真正的加载了词项、CompiledFileDictionaries中调用读取词项。
词典文件读取采用了Lazy Mode,即需要的时候再加载。
1.5 词典编译
(1)根据系统参数配置,调用相应的词典编译类,共有两种一种是MostWordsModeDictionariesCompiler类,即最大词量分词方式,另一种是SortingDictionariesCompiler这个是按词的字顺编译的方式;
(2)判断(vocabularyDictionary)词典是否应该编译:检查文件夹中是否在这个文件:.compiled/xxx/.metadata,从中读取词典的元数据,如果编译类、摘要、版本相同,说明经过了编译,则不需要编译;其他情况都需要编译。
(3)最小切分分词词典编译:将词典中的每一个词当作一个可以被分词的字符串,如果该词还可以继续被完全分解为多个词,那么编译后不记录该词。程序分词某个词后将其首尾位置之间的位置都置为true,如果一个词的所有位置都为true那么说明该词能再被完全分解为多词,否则可作为独立词。
(4)SortingDictionariesCompiler其实就是按词在词典中的原序来进行编译,基本不再做其他处理。
(5)readCompliedDictionaries方法返回庖丁中的编译后的多种词典集合。
1.6 词典变更侦测
(1)变更侦测原理
在创建Paoding时初始化Dictionaries,然后启动Detector利用线程驻守,定期去检测;每一个字典都有一个快照,记录下当前快照,检测时将最新快照与当前快照比对,如果发现不同,那么说明有更新,则触发变更监听DiffListener。更新有三种情况:修改、删除、添加。发现更新后,监听器刷新词典,然后重新为各个Knife设置词典。
(2)快照原理
快照主要记录了如下信息:
// 此次快照版本,使用时间表示
private long version;
// 根地址,绝对地址,使用/作为目录分隔符
private String root;
// String为相对根的地址,使用/作为目录分隔符
private Map/*<String, InnerNode>*/ nodesMap = new HashMap/*<String, InnerNode>*/();
//内部节点
private InnerNode[] nodes;
//checksum of this snapshot
private String checksum;
快照刷新方法:获取当前时间作为version,根路径作为root,内部所有的文件作为nodes,然后<相对根的地址,node>作为nodesMap;
快照摘要:采用lazy mode获取快照摘要;
快照对比原理:对比version\root和新增、修改、删除的词典文件(而不是词典中的词)。
发表评论
-
百度GOOGLE的用户鼠标行为分析<转>
2012-08-29 09:37 1484转自:http://www.20ju.com/conte ... -
lucene 一些性能调优建议
2012-08-22 16:12 5532lucene 排序 Lucene默认按照相关度 ... -
<转>庖丁解牛分词之自定义词库[自定义词典]
2012-07-03 10:21 892原链接: http://hi.baidu.com/stone_ ... -
solr 百度相关搜索类似功能的实现
2012-06-27 16:26 5733这个功能的实现有几种不同的思路。 大概半个月前,我在网 ... -
solr 索引库同步数据库
2012-06-27 14:01 5617对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
solr 对拼音搜索和拼音首字母搜索的支持
2012-06-27 13:52 9047对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
<转>Solr Suggest实现搜索智能提示
2012-06-27 10:15 13836智能提示简介 搜索的智能提示目前是各大搜索的标配应用, ... -
IK的整个分词处理过程
2012-06-26 14:25 11551IK的整个分词处理过 ... -
Solr的检索运算符
2012-06-21 14:47 4209“:” 指定字段查指定值,如返回所有值*:*² “?” 表示 ... -
Solr 学习(5) —- Solr查询语法和参数
2012-06-21 14:25 11152、查询语法 solr的一些查询语法 ... -
Apache Solr schema.xml及solrconfig.xml文件中文注解
2012-06-21 10:55 1157一、字段配置(schema)schema.xml位于so ... -
<转>LUCENE3.0 自学吧 4 TermDocs
2012-06-07 22:13 1205利用TermDocs也是可以得到一些有用的结果。。。代码 ... -
<转>Lucene里经常被聊到的几个话题
2012-06-07 21:54 1231lvpei.cnblogs.com.自己总结的Lucen ... -
<转>浅谈文档索引普遍原理<笔记>
2012-06-07 21:49 997--lvpei.cnblogs.com 搜索引擎普遍采 ... -
Lucene中Field类很重要
2012-06-07 21:46 8222org.apache.lucene.demo.Index ... -
Lucene架构简单分析
2012-06-06 15:30 1632Lucene简介Lucene 是一个基 ... -
<转>lucene3.0中Field.Index, Field.Store,Field.TermVector详解
2012-06-06 14:49 890lucene在doc.add(new Field(&quo ... -
<转>用于Lucene的各中文分词比较
2012-06-05 09:58 5551对几种中文分析器,从分词准确性和效率两方面进行比较。分析器依次 ... -
Lucene3参考资料
2012-06-05 09:46 962http://wenku.baidu.com/view/706 ... -
lucene索引word/pdf/html/txt文件及检索(搜索引擎)
2012-06-04 14:59 956因为lucene索引的时候是 ...
相关推荐
Lucene建立索引jar包和Paoding庖丁分词jar包,Lucene结合Paoding庖丁分词创建索引索引jar包汇总
由于庖丁官方目前提供可下载尚不支持Lucene 3.0以上版本。因此作者对paoding进行重新编译,使其与最新Lucene 3.0.1版本适用。 Latest paoding 3.0.1 for lucene 3.0.1 使用说明: 先下载2.0.4的版本(h t t p : / ...
庖丁分词.jar 庖丁分词.jar 庖丁分词.jar 庖丁分词.jar
很好用的中文分词器,能很好的与搜索引擎框架整合,此jar兼容支持Lucene3.0以上版本。
https://github.com/chubbyjiang/MapReduce
庖丁解牛中文分词,速度不错,词库也很全面,非常不错!
庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包
庖丁中文分词库是一个使用Java开发的,可结合到Lucene应用中的,为互联网、企业内部网使用的中文搜索引擎分词组件。Paoding填补了国内中文分词方面开源组件的空白,本书介绍了在nutch上配置paoding
支持中文的庖丁解牛,庖丁分词,找了好久才找到的希望对你有帮助。
庖丁中文分词在VB.NET的使用例子方法
庖丁分词的jar包
庖丁中文分词需要一套词典,这些词典需要统一存储在某个目录下,这个目录称为词典安装目录。词典安装目录可以是文件系统的任何目录,它不依赖于应用程序的运行目录。将词典拷贝到词典安装目录的过程称为安装词典。...
能兼容solr-4.10.2的分词器,大礼包...包括IK分词器,mmseg4j分词器,庖丁分词器.都是经本人测试可用,其中mmseg4j与庖丁都是下载源码,修改重编译并测试生成的.希望大家喜欢.至于与solr的整合方式,网上很多,这里就不介绍了.
pom中定义了依赖包org.apache.lucene的lucene-analyzers2.2.0,commons-logging的commons-logging1.0.4,target中的jar包即是编译后的文件。可以自己动手打包paoding.jar
庖丁解牛分词之自定义词库、庖丁解牛配置,java搜索分词
Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。 高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。 采用基于 不限制个数 的词典文件对文章...
庖丁解牛分词器源码,包含源码与对应项目,可以用eclipse打开编译
paoding-analysis 庖丁分词 paoding-analysis.jar java开源中文分词jar包
庖丁分词测试数据集 工具
paoding 中文分词 项目包 可通过文本读取内容分词 运行 src/AnalyzerTest 即可