如题,我从以前开始就一直对类似百度这种 0.1 秒搜索出来几亿结果的技术非常感兴趣,这个问题就是单纯想拓宽一下知识面
1 、一般公司的业务场景,最基础的搜索功能,直接用 sql 的全文索引,比如存储一千万篇文章,按照标题搜索,应该都是刚得住的,虽然不知道搜索效果怎么样。
2 、如果要做一个更大数据规模的搜索功能,比如如果有百亿条数据,应该用上述方法是刚不住的,就需要用一些搜索引擎相关的技巧,也是这篇文章主要想问的。
我以前查过一些搜索引擎相关的资料,业务端大体逻辑应该分成三部分,其一分词和分析语意,其二是召回数据库中的资料,其三是进行关联度排序。当然如果像百度这种体量,数据库本身肯定也需要虚拟化才能支持这么高的可用性,数据库相关的暂时不在今天讨论范围内。
我搜索到的资料说,比如有一种常用召回方法叫倒排索引,我很好奇这是怎么的一种索引方法。因为正常来说,比如你已经有一百亿行了,然后你还有比如三十万个客户经常用来搜索的关键字,在此基础上你按照多对多的关系还要建立索引(那理论上这个索引应该庞大到爆炸,会出各种问题才对),到底是怎么回事呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.