Lucene搜索
2015-11-22 14:45:31 20 举报
Lucene是一个高性能、全功能的信息检索库,基于Java编写。它提供了一个简单而强大的API,用于创建和搜索文本索引。Lucene的核心组件包括:分析器(用于将文本分解为词条)、索引器(用于将词条添加到索引中)、查询处理器(用于解析用户查询)和搜索器(用于在索引中执行查询)。 使用Lucene,您可以快速地为您的应用程序添加全文搜索功能。例如,您可以使用Lucene来搜索电子邮件、文档、数据库记录等。此外,Lucene还支持多种语言和字符集,可以处理中文、日文、韩文等多种语言的文本。
作者其他创作
大纲/内容
通过索引存储将索引读入到内存
文档(Documnet)
词(Term)
Gatherdata
将搜索到的结果文档对查询的相关性进行排序
...
用户
1、不同的文档是保存在不同的段中的,一个段可以包含多篇文档;2、新添加的文档是单独保存在一个新生成的段中,随着段的合并,不同的文档合并到同一个段中。2、每个索引块(Segment)包含了一定数目的文档,我们能够对单独的索引块进行检索;3、索引块的个数由索引的文档的总数以及每个索引块所能包含的最大文档数来决定;
segment_N
域(Field)
SearchIndex
反向信息:
_0.xxx
文件系统
索引(Index)
Doc4
_1.xxx
正向信息:
Doc3
层次结构: *.tis、 *.tii: 保存了词典(Term Dictionary), 即此段包含的所有的词按字典顺序的排序。 \u000B *.frq:保存了倒排表,即每个词的文档ID列表。 \u000B *.prx:保存了倒排表中每个词在包含此词的文档中的位置。\u000B
Doc2
_0.xxx :段文件从0开始计数segment_N:其中N代表段的个数
web
IndexDocuments
词法分析:主要用来识别单词和关键字
段(Segment)
利用查询树搜索索引,从而得到每个词(Term)的文档链表,对文档链表进行交,差,并得到结果文档
查询结果
一篇文档包含不同类型的信息,并分开索引,比如标题, 时间,正文,作者等,都可以保存在不同的域里,不同域的索引方式可以不同
文档(Document)
Index
输入查询
返回查询结果
语法分析:主要是根据查询语句的语法规则来形成一棵语法树
对查询语句进行:词法分析、语法分析、语言处理得到一些列词(Term)
语言处理:同索引过程中的语言处理类似
通过语法分析得到一个查询树
Doc1
Lucene Index
计算权重
DB
输入查询语句
0 条评论
下一页