第二和第三章的教程中我们学习了搜索引擎原理中网页搜集以及预处理的实现方法,在本章我们将一起研究搜索引擎的查询服务是如何实现的。
下图为搜索引擎的查询服务流程图,搜索引擎完成一个查询服务将经过如下几个步骤:
查询服务流程
- 得到用户的查询语句,例如“搜索引擎原理”。
- 将用户的查询词进行分词,分为“搜索引擎”和“原理”。
- 在倒排索引表中找到包含“搜索引擎”的文档列表和包含“原理”的文档列表。
- 将找到的文档列表求交集,找到既包含“搜索引擎”又包含“原理”的文档列表。
- 然后将用户的查询以及上一步找到的文档列表中的被一条记录进行向量化。
- 求用户查询向量和每篇文档向量的相似度。
- 按照相似度高低进行排序,然后输出。
向量化
我们可以假设用户的查询是有方向和大小的,方向是由查询词的分词结果来表示,大小是以每个关键词的权重来表示。
例如用户查询“搜索引擎原理”,可以认为用户是更希望查询“搜索引擎”相关的文章,并且尽量与“原理”相关。
同理,我们可以对每个文档进行向量化,以文档内的关键词以及出现的次数来判断该文档是与“搜索引擎”更相关还是与其他内容更相关。从下图不难看出,一篇内容为“学习搜索引擎,搜索引擎原理”的文档比一篇内容为“如何学习,学习搜索引擎原理”的文档更加与“搜索引擎”相关,因此前者应该排在后者前面。
小结
从本文的知识点来看,好的网站应该注重内容的相关性,只有与用户查询的关键词更加相关,你的文章才更有机会出现在用户的面前。
搜索引擎在查询服务中除了要对相关文档进行排序之外,还需要给排序后的每一个项目生成摘要,这个技术我们在下一节的《4.2、搜集引擎信息查询服务--中文自动摘要》中探讨。