1 / 9
文档名称:

lucene版本对比.doc

格式:doc   大小:314KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

lucene版本对比.doc

上传人:63229029 2017/4/13 文件大小:314 KB

下载得到文件列表

lucene版本对比.doc

相关文档

文档介绍

文档介绍:一、为什么使用 lucene 1、 Lucene 不是一个完整的全文索引应用,而是是一个用 JAVA 写的全文索引引擎工具包, 它可以方便的嵌入到各种应用中实现针对应用的全文索引/ 检索功能。这样的定位, 使得 lucene 有很高的抽象层次, 便于扩展和整合到已有的系统。因为对于大多数的全文搜索应用来说, 我们需要的是一个开发工具包而不是最终产品( 虽然很多搜索引擎也可以扩展特性功能)。这也是程序员最愿意接受的封装层次。 2、 Lucene 的 API 接口设计的比较通用, 输入输出结构都很像数据库的表==> 记录==> 字段, 所以很多传统的应用的文件、数据库等都可以比较方便的映射到 Lucene 的存储结构/ 接口中。( 上面语句有些来自在应用中加入全文检索功能——基于 JAVA 的全文索引引擎 Lucene 简介)。二、 新特性较重要部分 1 、全部使用字节( utf-8 tytes ) 替代 string 来构建 term directory 。带来的好处是: 索引文件读取速度 30 倍的提升; 占用原来大约 10% 的内存;搜索过程由于去掉了字符串的转化速度也会明显提升; 但是如果说这上面的好处只是一个副产品,你会怎么想? 没错, Mysql 有 MyIsam , Innodb 等诸多引擎供我们选择的, Lucene 为什么不能向这个方向发展呢? 实现这个机制的模块叫: Codec ( 编码器), 你可以实现自己的 Code c 来进行自定义的扩展,很显然 Codec 的操作对象是 Segment 。 2、支持多线程建索引,支持: concurrent flushing 。了解过 Lucene 的同学们都知道,诸如 XXXPerThread 的类在建索引的时候已经支持多线程了, 但是当每个线程的内存达到指定上限(maxBufferedDocs or ramMaxBufferSizeMB) 的时候就需要写到硬盘上, 而这个过程仍然不是多线程的, 仍然需要一个个排队 Flush 到硬盘。 Lucene 终于支持 concurrent flushing 了。 DocumentsWriterPerThread , Lucene 的 Concurrent Flushing 正是这个类来实现的。 3、基于有限自动机的模糊匹配算法( FSA 算法), FuzzyQuery FuzzyQuery 这类查询估计大家用的比较少。在英文中单词拼写错误,比如: Lucene , Licene , lucen 等就可以用 FuzzyQuery 来进行查询提高查全率。在 lucene 之前的 FuzzyQuery 的实现非常耗费 cpu ,实现算法也很暴力。具体过程是: 读取每个 term , 然后计算每个 term 与查询词的“编辑距离”, 如果在指定的范围内则返回。 Lucene 使用 Levenshtein Automaton 的来衡量文字的" 编辑距离" ,使用有限状态自动机来进行计算。以数百倍的效率提升了 FuzzyQuery 的效率。三、 正式版亮点功能: 一、通过解码器 Codec 机制 Lucene 索引格式与 Lucene 架构解耦, 变成了 Plugin 方式实现,