倒排索引

倒排索引中的索引指的是什么 #card

  • term 到 item_id 列表的映射

用户输入搜索query后,系统如何从库中找到命中query词的商品?暴力的方法是先对query进行分词得到每个query的term,而后遍历每个商品信息的每个term词,如果query term在商品信息中全部命中,则召回该商品。这种暴力方法有显而易见的效率问题:#card

  • 每次搜索都要有QNL次term匹配计算(Q: query 平均term数,N:商品数,L:商品信息平均term数)。

简单举例来说:假设有三个文档,“Winter is coming.”, “Ours is the fury.” 和 “The choice is yours.”, 经过简单的文本预处理(大小写转换、删除特殊字符、分词等),可以建立起如图所示的“倒排索引”。#card

  • 倒排索引是文档term到包含该term文档id的字典,基于字典数据结构的hash机制,可以快速找到包含指定term的文档id集合。

  • 可用搜索引擎如基于Lucene库的Elasticsearch

image.png

作者

Ryen Xiang

发布于

2025-04-20

更新于

2025-04-20

许可协议


网络回响

评论