搜索引擎是如何完成短语检索的?

简介: 搜索引擎进行短语检索时,首先尝试将整个短语作为关键词在倒排索引中查找。若未命中,则拆分为更细粒度的词(如“极客”“时间”)分别检索,并利用位置信息索引法,通过计算关键词间的最小窗口长度判断 proximity,确保结果中词语位置接近,从而实现精准匹配。

首先,我们可以使用「极客时间」作为一个完整的关键词去倒排索引中查找。如果倒排索引中能查询到这个关键词,并且返回的结果集足够,那这样的检索结果是非常精准的。但是,这依赖于我们在构建索引的时候,必须将「极客时间」作为一个关键词进行处理。

可是在构建倒排索引的时候,我们一般是通过分析搜索日志,将一些常见的热门短语作为关键词加入倒排索引中。由于能被直接作为关键词的短语数量不会太多,因此,如果「极客时间」没有被识别为热门短语进行单独处理的话,那我们拿着「极客时间」这个短语作为关键词,直接查询的结果就是空的。

在这种情况下,我们就会使用更细粒度的分词结果,也就是使用「极客」和「时间」这两个关键词,去做两次检索,然后将得到的结果求交集合并。不过,这样做就会有一个问题:如果只是简单地将这两个关键词检索出来的文档列表求交集合并,那我们最终得到的结果并不一定会包含带有「极客时间」的文档。这又是为什么呢?

你可以考虑一下这种情况:如果有一个网页中有一句话是「一个极客往往没有时间打游戏」。那我们搜索「极客」「时间」这两个关键词的时候,这个网页就会被检索出来。但这是我们期望的检索结果吗?并不是。因为「极客」和「时间」的位置离得太远了。

那如果我们能记录下关键词出现在文档中的位置,并且在合并文档列表的时候,判断两个关键词是否接近,不就可以解决这个问题?没错,这种方法就叫作 位置信息索引法。我们会通过两个关键词的位置关系来判断该文档和检索词的相关性。位置越远,相关性就越小,如果位置直接邻接在一起,相关性就最高。

如果是两个以上的关键词联合查询,那我们会将同时包含所有关键词的最小片段称为最小窗口,然后通过衡量查询结果中最小窗口的长度,来判断多个关键词是否接近。这么说比较抽象,我们来举个例子。当我们分别以「极」「客」「时」「间」这四个字作为关键词查询时,如果一个文档中有这么一句话「极多客人,一时之间」,那字符「极」到字符「间」之间就是 9 个字符。也就是说,在这句话中覆盖「极」「客」「时」「间」这四个关键词的最小窗口长度就是 9。

有了这个方法,我们就可以将搜索结果按照最小窗口长度排序,然后留下相关性最高的一批结果了。这样,我们就完成「极客时间」的短语检索了。

相关文章
|
存储 资源调度 Apache
Flink on yarn 的taskslot为0问题
Flink on yarn 的taskslot为0问题
|
2月前
|
机器学习/深度学习 算法 搜索推荐
如何使用机器学习来进行打分?
机器学习通过加权融合多种打分因子(如网站权威性、用户行为等)自动学习最优权重,结合Sigmoid函数将得分映射到(0,1)区间,衡量相关性。常用模型包括逻辑回归、梯度提升树及深度神经网络,相比人工规则更高效精准。
|
2月前
|
存储 索引
如何利用四叉树动态调整查询范围?
四叉树通过层次化划分空间,根节点代表全区域,子节点编码组合形成区域码。检索时沿路径查找,不足K个结果则回溯父节点扩大范围,实现动态调整查询范围,提升效率。
|
2月前
|
人工智能 程序员 API
GPT-5.2来了,老金详细给你说说它为什么是王
OpenAI悄然上线GPT-5.2,因谷歌Gemini 3发布引发“红色警报”。新模型提升显著:幻觉减少38%,上下文达40万token,支持长文档精准处理;ARC-AGI-2与GDPval评测显示其真实推理与工作能力大幅增强,尤其适合金融、法律等专业场景。推出Instant、Thinking、Pro三版本,满足不同需求。虽无惊艳发布,但聚焦打工人实际应用,标志着AI向通用生产力工具迈进。
403 11
|
2月前
|
JSON 供应链 API
淘宝图片搜索商品API指南
淘宝图片搜索商品API基于图像识别技术,支持上传图片查找同款商品,返回标题、价格、销量等信息,适用于比价、找同款等场景。支持多维度筛选,采用HTTP POST请求与签名认证,响应格式为JSON,提升电商购物体验。
|
2月前
|
人工智能 JSON API
从MCP到PTC Anthropic回归Code Execution路线,AiPy的范式被再次验证
Anthropic从MCP到Programmatic Tool Calling的演进,实则是对“上下文爆炸”问题的修正,仍属“上下文工程”范畴。而AiPy早于Claude Code提出Python-use范式,主张“Code is Agent”,通过代码直接交互环境,实现“万物互联、万物编程”。相较MCP/PTC依赖预定义工具,Python-use更具扩展性与灵活性,兼容API、包调用及本地执行,早在2024年8月即实现命令级代码执行,领先Skills两月。CodeAct理念与其高度一致,但本质仍是工具注册模式。Python-use范式直击Agent核心:大模型与环境数据的无限连接能力
|
2月前
|
存储 安全 Java
解密电商平台 SSO 单点跨域
本文深入解析电商平台SSO单点登录与跨域问题,涵盖核心概念、流程拆解及实战方案。通过统一认证中心与JWT令牌实现多系统无缝访问,结合CORS解决跨域难题,提升用户体验与系统安全性。
140 1
|
2月前
|
人工智能 开发框架 Java
Java+AI 的终极结合!JBoltAI 框架助力企业快速落地 AI 应用
JBoltAI是专为Java技术栈打造的企业级AI应用开发框架,破解传统系统接入AI成本高、周期长、稳定性差等难题。深度融合主流大模型与向量数据库,提供脚手架代码、场景案例、系统课程与专属支持,助力Java团队快速实现AI转型,让AI应用开发更高效、更稳定、更易落地。(238字)
169 0
|
2月前
|
Linux 虚拟化 iOS开发
VMware ESXi 8.0U3h macOS Unlocker & OEM BIOS 2.7 Realtek 网卡集成驱动版
ESXi 8.0U3h Realtek 网卡(RTL8111 / RTL8125 / RTL8126 / RTL8127)定制版
233 0
|
机器学习/深度学习 人工智能 自然语言处理
秒级响应 + 99.9%准确率:法律行业文本比对技术解析
本工具基于先进AI技术,采用自然语言处理和语义匹配算法,支持PDF、Word等格式,实现法律文本的智能化比对。具备高精度语义匹配、多格式兼容、高性能架构及智能化标注与可视化等特点,有效解决文本复杂性和法规更新难题,提升法律行业工作效率。
840 9