CM开发日志 - 搜索引擎(四) - Lucene 反向索引

什么是反向索引?(很多文章也称为倒排索引)

索引技术主要有以下3种: 反向索引,后缀数组和签名文件。其中, 反向索引技术在当前大多数的信息检索系统中得到了广泛的应用, 它对于关键词的搜索非常有效, 在lucene中也是使用的这种技术。后缀数组技术在短语查询中具有很快的速度, 但是这样的数据结构在构造和维护时都比较复杂一些。签名文件技术在20世纪80年代比较流行, 但是后来反向索引技术逐渐超越了它。

反向索引是目前搜索引擎公司对搜索引擎最常用的存储方式, 也是搜索引擎的核心内容, 反向索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值, 而是由属性值来确定记录的位置, 因而称为反向索引。反向索引是以关键字和文档编号结合, 并以关键字作为主键的索引结构。

应用举例

Solr 使用了 Lucene 的反响索引为【快速搜索】提供动力。虽然我们不会深入介绍太多 Luncene 内部的数据结构,但是了解反向索引的【基本结构】还是非常有必要的。

回想一下前面用过的搜索书籍的例子,我们可以在下表中看到索引是如何将关键字映射到文档的:

原始文档(传统的数据库)
文档编号内容字段
1A Fun Guide to Cooking
2Decorating Your Home
3How to Raise a Child
4Buying a New Car
5Buying a New Home
6The Beginner’s Guide to Buying a House
7Purchasing a Home
8Becoming a New Home Owner
9How to Buy Your First House
Lucene 反向索引文档
关键字文档编号
a1,3,4,5,6,7,8
becoming8
beginner’s6
buy9
buying4,5,6
car4
child3
cooking1
decorating2
first9
fun1
guide1,6
home2,5,7,8
house6,9
how3,9
new4,5,8
owner8
purchasing7
raise3
the6
to1,6,9
your2,9

传统的数据库表示文档需要使用文档 ID 来映射文档中包含了关键字的一个或多个字段,而反向索引刚好和这种方式相反(因此叫做反向索引),它映射关键字到包含了这个关键字的文档ID。你可以通过上面的表格看到,原始数据通过空格分开,并且全部转换成了小写字母后存入了反向索引,而其它一切都保持不变。还要注意的是,不仅仅是上面的这些简单的信息,另外附加的一些文本内容也有可能被添加到反向索引。所有的关键字可以在进行内容分析的时候进行修改,添加或删除。

最后还有两个关于反向索引的细节需要了解:

  • 所有在索引中的关键字可以映射到一个或多个文档。
  • 反向索引中的关键字按照字典顺序升序排列。

好了,现在我们已经对反向索引有个大致的了解。更多细节部分可查看 Lucene 相关资料。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值