先放上一首歌
今天这一篇的序号是0xFF,算是外篇吧,和Golang没什么关系,和代码也没什么关系,今天说说搜索引擎的排序吧,我会以电商的搜索排序为例来说,因为基本上除了大搜索以外(PageRank技术),其他的搜索排序都和电商的搜索引擎差不太多,无非就是属性的选择。
一个标准的搜索引擎有三个最重要的部分,爬虫,检索,排序。
爬虫水太深了,各种黑科技层出不穷,光代理的选择就有各种黑科技,而且只有百度这种全网搜索引擎或者某些靠爬数据的细分领域的垂直搜索引擎才需要爬虫,重要的是我也不是很了解这一块,所以就说不了了,我们默认数据都是自有的数据,类似电商的搜索引擎。
检索的话,我之前的文章主要介绍的就是这一块的东西。
排序是直接影响用户体验的部分,这也是搜索引擎和数据库效果上差别比较大的部分了,排序完全可以写一本书出来,这里我就用一篇文章来说说我所理解和了解的排序吧。
我没见过大厂的搜索,所以可能说得不对啊。
首先,我们还是定个标准,因为搜索引擎的排序根据场景的不同使用的技术也不太一样,比如通用搜索引擎,像谷歌和百度这种,PageRank是主要技术了,对于一个不需要爬虫的搜索引擎,一般也不会用到PageRank技术了。
我们说说特定领域的搜索引擎的排序,最经典的场景就是电商类搜索引擎怎么排序。我并不是这方面的专家,所以有些东西说的不够准确也别喷,而且排序也是各种新技术层出不穷,一篇文章要说明白也是不太可能的,更深入的大家可以自己去找资料哈,下面我们以一个电商的搜索引擎为例说说排序。
对于搜索一个关键词,直观的感觉应该有哪些因素影响到它的结果集排序呢?一般人很明显能想到的有关键词和商品的匹配程度,商品销量,商品好评度,是否有货等,再深入一点可能能想到商品被收藏的次数,被点击的次数这一类的东西。
OK,我们一步一步来说说吧,顺着说的时候我们先定一个规则,就是无论多少个因素影响排序,最终每个商品都会得到一个分数,排序的时候就按这个分数来进行排序,我们这里以最简单的办法,这是一个32位的整数,我们使用其中的21位,最后就按这个21位的整数的大小来进行排序。
关键词和商品的匹配程度