无双科技

百度一下,你就知道! 搜索引擎大致的架构与工作的流程

时间:2019-07-29 13:48:45 出处:无双科技

百度一下,你就知道"。这句耳熟能详的话语背后,说的就是搜索引擎。

除了从所周至的百度外,还有非常多的搜索引擎,尽管搜索引擎各式各样,但是他们的原理跟步骤都是差不多的,今天我们来简单地介绍介绍,一个搜索引擎大致的架构与工作的流程。


首先是元数据收集,没有数据,搜索什么?这个收集的方式有很多种,如果我们是搜索互联网上面的网页,那么我们可能需要一些爬虫软件去爬取数据,爬取到数据之后呢,我们要对关键信息进行提取,大部分网页上面都是HTML的结构,我们只需要正文的内容就行了,向一些导航栏呀,侧边栏呀,能够提取的有效价值并不高。如果我们只是建一个自己文章的搜索引擎,那就更加简单了,可以直接使用所有文章的文件内容,无需去实现爬虫。


接下来是索引,因为整个文章可能非常的长,我们不可能每次搜索都进行全文的对比,所以我们常常对文章进行分词,建立对应的关键字索引。网上已经有很多开源的工具分词工具可以使用,例如Java语言的word,有兴趣的话大家可以了解下。这里有一个简单的细节优化,有一些词是不用建立索引的,例如你,我,他,是之类的词语,太普遍了,价值并不是很高,反而是一些专有名词,如算法、数据结构、架构师这类的词语价值更高。这里我们可以简单存储为下面的格式。


我们简单地使用3张表进行存储,地址表、单词列表、还有单词与地址的关系表。每次有一个查询,我们就先找单词表,然后再找到单词与连接表中所有的关系,然后返回对应的地址列表即可。

接下来我们会有一个问题,我们搜索到很多很多的东西,如何展示给用户呢?例如某个关键词,可能搜索出10万个不同的网页,到底用户需要哪一个呢?这个时候就需要进行搜索排名了。常见的搜索排名有哪些呢?例如:

1.关键字的出现频率,出现的越多次,得分越高。

2.关键字出现的时机,越早出现得分越高,出现的越均匀,等分越高

3.内容的创建时间,这个比较适合新闻类的搜索。

当然还有很多种,例如有些搜搜引擎公司谁给的钱多,谁就排在前面。


基本上,用了实现了这三步,一个简单的搜索引擎就完成了。但这远远不够,在今天这个时代,我们肯定希望搜索引擎越来越聪明!用AI武装到牙齿!今天,我们也经常用神经网络算法来优化我们的搜索引擎,我们可以把用户的搜索的关键字作为神经网络的输入,把用户最终的点击结果作为神经网络的输出,这样子反复训练,我们的搜搜系统就会越来越智能!



当然,现实中,搜索引擎是比这个复杂地多了,毕竟有海量的查询跟存储都需要优化,索引、排名的算法各家也有各家的特色,后面我们可以讲一讲一些常见的内容。说点题外话,相信你读到这里,你会对现网百度的困境也多了一些理解,为什么进入移动互联网时代后百度越来越困难,主要表现在第1跟第4点,首先是百度能获取到的数据越来越少了,其次是用户使用百度的频率也降低,恶性循环,百度也越来越难以掌握用户的动机了。


猜你喜欢