布尔检索模型

本文介绍了信息检索中的倒排索引和布尔检索模型。从线性扫描的低效出发,引入倒排索引的概念,通过倒排索引实现快速搜索。布尔检索模型允许用户使用AND、OR和NOT等逻辑操作符构造查询,通过倒排索引处理布尔查询,提高搜索效率。文章通过实例展示了如何构建倒排索引和处理布尔查询的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看《Introduction to Information Retrieval》(中文版为《信息检索导论》,下文简称为“IR”),是最经典的信息检索书籍之一了。由于淞姐要求我细读这本书然后跟同事分享,就有了这个版块,之后会陆续添加后续章节内容。即使是站在巨人的肩膀上了(看了中文版和英文版IR,也从网上搜集了不少内容),但很多细节往往还是需要自己用心体会。从一个读者到一个讲解人,在第一次做分享的时候已经感觉很不容易了,有些东西原来只是一知半解,能自己想清楚但却很难表述。这些内容就是个人的一些读书笔记,希望能给刚好想了解搜索引擎的你带来一些启发。文中会尽量备注英文原版中的术语以免丢失本意。英文电子书可以从官网获取 Introduction to Information Retrieval

线性扫描和倒排索引

从线性扫描讲起

如果需要从文档集合 D D 中搜索包含某个关键词 k 的文档,最直接的方法就是从头到尾扫描文档集 D D ,对每个文档 d i 都查看是否包含关键词 k k 。这种线性扫描的方式最为直观易懂,在Unix/Linux系统中的文本扫描命令grep做的就是这种工作。然而,当需要检索的文档规模非常大时,这种线性扫描的方式的效率会变得非常低下。线性扫描的时间复杂度与文档集大小成正比,在大规模文本检索的场景下,线性扫描不再适用。大型的Web搜索引擎需要检索千亿级别数量的网页,如果采用类似grep的线性扫描方式,就需要依次扫描这么多的文本来判断每一个网页是否符合查询要求,这样的检索慢如蜗牛,用户显然无法接受。目前,搜索引擎通过事先给文档建立索引(index)的方法来避免这种线性扫描,使得搜索过程非常快速,这种技术称为倒排索引。

IR中,以《莎士比亚全集》为例子来说明倒排索引的基本知识。这里笔者就重新举个例子吧。假设某文档集中存在这样的三篇文档(还有其他文档不列举),分别是 d 1 为“Apple and cat”, d2 d 2 为“I like cat”, d3 d 3 为“I have an apple”,用矩阵表示,当文档d中存在词项t时,矩阵元素(d, t)为1,否则为0:

文档\词项 apple and cat I like have an ... . . .
d1 d 1 1 1 1 0 0 0 0 ... . . .
d2
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值