当前位置: 首页 > news >正文

第 1 章 布尔检索

读第一章不要追求一遍全懂,重点是抓住“检索系统为什么需要倒排索引”这一条主线。

一、信息检索的基本问题

你先记住一句话:

信息检索就是:用户输入查询query,系统从大量文档documents中找到相关文档relevant documents。

你读的时候要分清楚这几个词:

概念含义
document被检索的文档
collection/corpus文档集合
query用户查询
term查询或文档中的词项
relevance文档和查询的相关性

第一章不要想的太复杂,先理解:

搜索系统的核心任务就是:从大量文档中快速找到相关文档。

二、倒排索引是第一章的核心

传统顺序扫描是:

查询一个词 → 从第 1 篇文档查到第 N 篇文档

倒排索引是:

词项 → 出现过这个词的文档列表

例如:

retrieval → doc1, doc3, doc8
model → doc2, doc3, doc7
search → doc1, doc4, doc8

如果用户查询:

retrieval AND model

系统就找:

retrieval 的文档列表 ∩ model 的文档列表

结果就是:

doc3

你要重点理解:

倒排索引把“文档找词”变成了“词找文档”,所以检索速度大幅提高。

三、布尔检索模型

第一章主要讲布尔检索,也就是:

AND
OR
NOT

重点掌握:

查询

含义

A AND B同时包含 A 和 B 的文档
A OR B包含 A 或 B 的文档
A AND NOT B包含 A 但不包含 B 的文档

例如:

information AND retrieval

意思是找同时包含 information 和 retrieval 的文档。

information OR retrieval

意思是找包含 information 或 retrieval 的文档。

information AND NOT retrieval

意思是找包含 information 但不包含 retrieval 的文档。

四、重点回答5个问题

1. 什么是信息检索?

信息检索,英文是 Information Retrieval,简称 IR,是指用户输入一个查询请求后,系统从大量文档集合中查找与用户需求相关信息或文档的过程。它的核心任务不是简单地查找某个词是否出现,而是要尽可能快速、准确地找到用户真正需要的内容,并把相关性更高的结果排在前面。在信息检索中,常见的基本概念包括查询 query、文档 document、文档集合 collection 或 corpus,以及相关性 relevance。简单来说,信息检索研究的就是如何从大量信息中快速找到有用信息。

2. 什么是倒排索引?

倒排索引是一种用于快速查找文档的数据结构。普通的文档组织方式是“文档到词”,也就是一篇文档中包含哪些词;而倒排索引则反过来,采用“词到文档”的结构,即记录每个词项出现在哪些文档中。例如,词项 retrieval 可能对应 doc1、doc3、doc8,表示这些文档中都出现了 retrieval 这个词。通过这种方式,当用户查询某个词时,系统可以直接根据该词找到相关文档,而不需要逐篇文档进行查找。因此,倒排索引的本质是把“从文档中找词”转变为“通过词直接找到文档”,从而显著提高检索效率。

3. 为什么搜索系统不用顺序扫描所有文档?

搜索系统通常不用顺序扫描所有文档,是因为这种方法在大规模文档集合中效率太低。顺序扫描意味着每次用户输入查询后,系统都要从第一篇文档开始,逐篇检查是否包含查询词或是否相关。如果文档数量只有几十篇,这种方式还能接受;但真实搜索系统往往面对的是几十万、几百万甚至更多文档,逐篇扫描会造成巨大的时间成本,无法满足快速响应的需求。倒排索引可以提前建立“词项到文档列表”的映射,查询时系统只需要查找相关词项对应的文档列表,就能快速定位候选文档。因此,搜索系统使用倒排索引而不是顺序扫描,是为了提高查询效率和系统响应速度。

4. AND、OR、NOT 查询分别怎么处理?

AND、OR、NOT 是布尔检索中的三种基本逻辑操作。

AND 表示两个词项必须同时出现在文档中,因此处理时需要对两个词项的倒排列表求交集。例如,查询 information AND retrieval,系统会分别找到 information 和 retrieval 对应的文档列表,然后返回同时出现在两个列表中的文档。

OR 表示只要包含其中任意一个词项即可,因此处理时需要对两个倒排列表求并集。例如,information OR retrieval 会返回包含 information 或 retrieval 的所有文档。

NOT 表示排除包含某个词项的文档,通常和 AND 结合使用,例如 information AND NOT retrieval,表示返回包含 information 但不包含 retrieval 的文档,本质上是对两个文档列表求差集。

简单来说,AND 对应交集,OR 对应并集,NOT 对应差集。

5. postings list 是什么?

postings list 通常翻译为倒排记录表或倒排列表,是倒排索引中最核心的数据结构之一。

它指的是某个词项出现过的所有文档编号组成的列表。

例如,retrieval → doc1、doc2、doc5、doc8,其中 doc1、doc2、doc5、doc8 就是 retrieval 这个词项对应的 postings list。在更完整的检索系统中,postings list 不仅可以记录文档编号,还可以记录该词项在每篇文档中的出现次数、出现位置等信息。这些信息可以支持短语查询、位置查询、词频统计和相关性排序。因此,postings list 可以理解为倒排索引中“某个词项对应的文档清单”,是实现快速检索的重要基础。

五、课后习题

习题 1-1 画出下列文档集所对应的倒排索引

文档1new home sales top forecasts
文档2home sales rise in july
文档3increase in home sales in july
文档4july new home sales rise

习题 1-2 考虑如下几篇文档:

文档1breakthrough drug for schizophrenia
文档2new schizophrenia drug
文档3new approach for treatment of schizophrenia
文档4new hopes for schizophrenia patients

a. 画出文档集对应的词项——文档矩阵;

b. 画出该文档集的倒排索引。

习题 1-3 对于习题 1-2 中的文档集,如果给定如下查询,那么返回的结果是什么?

a. schizophrenia AND drug

文档1、文档2

b. for AND NOT (drug OR approach)

文档4

http://www.jsqmd.com/news/1101603/

相关文章:

  • 别再手动Review AI代码了!这套自动化校验流水线让缺陷检出率提升4.8倍(含开源RuleSet + SonarQube插件)
  • 别再死磕SPWM了!手把手教你用STM32实现SVPWM驱动PMSM电机(附代码)
  • 手把手教你用STC89C52单片机读取MPU6050数据,并在LCD1602上实时显示(附完整代码)
  • 琳恩纳模式系统小程序开发
  • 功能测试详解
  • 告别杜邦线!用STM32F103C6T6自制MPU6050+QMC5883L九轴传感器模块(含蓝牙无线传输)
  • 开题写作效率拉满!okbiye 专属开题 AI 模块,一站式搞定毕业第一道关卡
  • Rich:让 Python 终端输出变得丰富好看
  • 实战指南:如何用OBS RTSP服务器插件实现高效专业直播推流
  • PAT考生迟到别慌!用C语言结构体快速实现座位号查询系统(附完整代码)
  • 别再只用SE了!手把手教你用PyTorch实现更轻量的ECA注意力模块(附完整代码)
  • 打破田间“信号孤岛”,乾元通多链路聚合路由筑基智慧农业新底座
  • 掌握Verilog-2001中的Function:语法、应用与设计实践
  • 基于关键点轨迹分析的奶牛社交行为识别技术
  • 苹果开放跨设备直连,瑞昱率先交卷:iOS 26 Wi-Fi Aware实测通关!
  • 四大主流图标库硬核横评:AI Agent 时代,谁是最佳拍档
  • Postman接口压力测试六步法:快速验证并发性能的轻量级方案
  • YOLOv5模型瘦身实战:用torch_pruning 0.2.7给模型‘减肥’,附完整代码与避坑指南
  • 别再只盯着CNN了!手把手带你用PyTorch从零搭建ViT模型(附完整代码)
  • 别再死记硬背公式了!用Python+SymPy实战推导圆柱面方程(附完整代码)
  • BiliDownloader:如何用开源技术实现B站视频的高效下载?
  • VMware虚拟机克隆全场景实战:从完整克隆到链接克隆,4步完成零故障迁移
  • 桌面分区管理神器:NoFences让你的Windows桌面告别混乱时代
  • STM32引脚不够用?试试用PCF8574芯片扩展IO口(附完整I2C驱动代码)
  • 别再只会用SignalR了!用Fleck库5分钟在.NET 6/8里搭一个轻量级WebSocket服务端
  • 别再迷信Transformer了!用PyTorch手把手实现DLinear时间序列预测(附完整代码)
  • Oracle 19c 监听器完全指南
  • MySQL数据库从入门到实践:核心概念、SQL操作与生产环境部署指南
  • 3个步骤让Windows电脑变身安卓应用中心:APK安装器使用指南
  • Cursor Free VIP终极指南:三步轻松破解Cursor AI试用限制,永久免费使用Pro功能