lucene 反向索引原理

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 wordsthe article appeared frequencyposition 
Guangzhou123,6 
He211
I114
Live 1[2]2
Shanghai 213
Tom 111

 

live 还有一个位置是2,5,2 

 

 

 

Lucene的索引结构是最核心部分。 我们可以看到关键字是按字母排序的,lucene的二分法查找能很快找到关键的位置。

 

 

 

 

从上可以看出一个索引由三部分组成 document (Term Dictionary), frequency document (frequencies), the position paper (positions)。索引中不仅只有关键字, 还有频率, 位置。一些指导信息可以能过关键字和位置找到。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值