lucene是一个高性能的全文搜索工具, 使用反向索引结构。 下面将介绍lucene结构与算法.
例子:
有两篇文章:
文章 1 : Tom lives in Guangzhou, I live in Guangzhou too.
文章 2 : He once lived in Shanghai.
1)
既然lucene是使用关键字索引和查询, 我们会采用下面的步骤处理这些关键字
A. 先要逐字识别出文章的字, 英文通常是用空格分割的。中文两个字却是在一起的。
B. 英文文章中的"in, 'once', 'too'没有什么实际的意义, 中文文章的"和", “是”也没什么意义, 也要根据语境去过滤掉
C.大小写会当成同一个字, 比如"He","he"
D. 单复数, 过去式也要简化成原型。 比如"lives"=>"live", "lived"=>live,
E.文章标点要能通过路lucene的分词器过滤掉
根据上面的处理:
文章 1 中的关键字: [tom] [live] [guangzhou] [i] [live] [guangzhou]
文章 2 中的关键字: [he] [live] [shanghai]
2)
根据这些关键字, 我们可以建立反射索引。 正向的索引是 “文章”里包含“所有的关键字”。 反向索引是指反转这种关系,变成“关键字” 在“所有包含这个关键字”。 这两篇文章反向索引之后,
关键字 文章
Guangzhou 1
He 2
I 1
Live 1,2
Shanghai 2
Tom 1
我们仅仅知道关键字在哪一些文章之中还是不够的, 我们还需要知道关键字在文章的频率和位置, 通常这里有两个位置:
a) 字符位置
b)关键字位置
添加文章的频率和位置后, 我们的索引变为:
Key words |
the article appeared |
frequency |
position |
Guangzhou |
1 |
2 |
3,6 |
He |
2 |
1 |
1 |
I |
1 |
1 |
4 |
Live |
1 |
[2] |
2 |
Shanghai |
2 |
1 |
3 |
Tom |
1 |
1 |
1 |
live 还有一个位置是2,5,2
Lucene的索引结构是最核心部分。 我们可以看到关键字是按字母排序的,lucene的二分法查找能很快找到关键的位置。
从上可以看出一个索引由三部分组成 document
(Term Dictionary), frequency document (frequencies), the position paper
(positions)。索引中不仅只有关键字, 还有频率, 位置。一些指导信息可以能过关键字和位置找到。
分享到:
相关推荐
lucene索引结构原理
结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等
Lucene实现索引和查询的实例讲解Lucene实现索引和查询的实例讲解
在Eclipse环境中运用java,Lucene建索引及查询关键字
lucene 做索引查询流程,来自《lucene in action》
NULL 博文链接:https://lpyyn.iteye.com/blog/2074543
基于MySQL和Lucene的反向索引系统的实时性能比较研究,刘一洲,徐鹏,搜索引擎是当今互联网使用最频繁的应用之一。为用户提供及时的,甚至是实时的信息索引是当今搜索引擎所要面对的首要挑战。倒排索
Lucene创建索引步骤: 1、创建Directory(索引位置) 2、创建IndexWrite(写入索引) 3、创建Document对象 4、为Document添加Field(相当于添加属性:类似于表与字段的关系) 5、通过IndexWriter添加文档到索引中
Lucene索引器实例Lucene索引器实例Lucene索引器实例Lucene索引器实例
基于lucene的索引与搜索 基于lucene的索引与搜索
lucene并行索引
lucene查看索引结构,简易工具,3.0版本
深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制
索引概念 反向索引 Lucene索引 ◦索引文件格式 总结
基于lucene技术的增量索引,实现索引的首次创建,动态增删改
Lucene创建索引,查询索引的简单使用。
luke3.5 可查看lucene3.5索引
索引概念 反向索引 Lucene索引 索引文件格式 总结
Lucene3.0创建索引 读取目录下的所有txt文档格式的文件,然后生成一个索引文件到某目录下!