Lucence倒排索引

带着问题探索:

  • 全文检索,为什么要全文检索?
  • 什么是lucence?
  • 什么是倒排索引?

一、全文检索

要了解全文检索首先需要了解:结构化数据与非结构化数据,以及半结构化数据,这三种数据构成了我们生活中所有数据的组成形式。

 结构化数据非机构化数据半结构化数据
含义有固定格式的的数据无固定格式的数据有一定格式的数据
举例数据库中的数据文章,邮件,博客内容XML,HTML文件
查询方式sqlgoogle,baidu搜索,linux下的grep命令,window搜索文件转化为半结构化或结构化数据查询

全文搜索的方式:

  1. 顺序扫描法:搜索词,将文章从头到尾,一个字符一个字符扫描,文件很大,耗时;搜索文件,或是将一个系统中的文件一个一个遍历查找,文件数量很多,耗时。linux中的grep命令就是这样的操作。

  2. 全文检索:将非结构化的数据,一部分数据提取出来,重新组织,使其有一定的结构性。(这部分提取出来的重新组织的数据称为索引)然后对此索引进行搜索。

举例:

  1. 如书中的目录,每一个章节的标题,都相当于是书的索引,标题所对应的内容都是非结构化的数据。标题也是从这些内容中提取出来的数据,我们将标题拿出来构建索引,指向对应的页数,便可快速找到对应的非结构化数据。
  2. 字典。

二、Lucence

lucence是Apache中一个开源的全文搜索引擎工具包,是一个全文搜索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。

目的是为开发人员提供一个简单医用的工具包。方便在目标系统中实现全文检索的功能,或者基于此建立完整的全文搜索引擎。

三、倒排索引

倒排索引就源于应用中需要根据属性的值,来查找记录的需求。这种索引表中的每一项都包括一个属性值和具有该属性值的个记录的位置。

由于倒排索引是由属性值确定记录的位置,而不是由记录确定属性值,因而称为倒排索引(inverted index)。

搜索引擎的关键步骤:

         

  1. 取得关键词:将文章做分词操作,取得关键词与文章的位置
  2. 建立倒排索引:建立索引,与文章的关系

举例:

两篇短文:

  1. I have an apple;
  2. The apple is bad,he has a bucket apples;

倒排索引构建:

  • 分词器根据分词规则分析,每个文章中的词,如标记所示,取得关键词。
  • 构建倒排索引。

最终会形成这样的倒排索引关键词频率位置结构:

关键词文章号[出现频率]出现位置
apple

1[1],

2[2]

3,

2,6

bad2[1]2
bucket2[1]5
have

1[1],

2[1]

2,3
he2[1]3
i1[1]1

实现:

lucence将上面三列分别生成了词典文件(Term Dictionary),频率文件(frequencies),位置文件(positions)。

词典文件还存了指向频率文件和位置文件的指针。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值