简介
搜索引擎主要由搜索器、索引器、检索器以及前端界面四部分组成。
搜索器的主要功能是不断从网络中爬取资源,同时不断维护曾经下载的资源,当之前的下载的信息进行更新后也要及时对下载的信息进行更新;
索引器的主要功能是对爬取的网页文档建立索引文件,对每篇文档中的关键词建立倒排索引,以便之后进行搜索,索引器的好坏也会影响搜索引擎的好坏;
检索器的主要功能是对检索到的文档结果按照一定算法进行排序,并给出排序结果;
前端界面就是提供给用户与搜索引擎进行交互的界面。
大体框架如下图所示:
其中Spider是爬虫部分,也就是搜索器,它负责将网页中的文档下载到本地文档库。Analyzer是中文切词模块,对本地文档库的每一篇文档按照逆向最大匹配算法进行中文切词,将切词结果返回给IndexCreate,即索引创建来建立索引文件并保存到索引库中这两部分组成了索引器。前面的过程即为后端数据建立的完整过程。而用户输查询信息通过中文切词分为N个关键词,对每个关键词进行索引得到索引到的文档列表。Index也就是检索器负责对文档按一定算法进行排序,排序得到的文档列表即搜索结果,将搜索结果展示给用户就行了。
设计思路如下:
- 创建爬虫程序对网络上的资源进行爬取,建立文档库;
- 构建中文切词程序以及索引创建程序,对文档库中的文档进行中文切词并建立倒排索引文件;
- 对用户输入的查询信息进行切词并按词进行查找相关文档,对查找到的文档按一定算法进行排序并展示给用户;
- 设计一个简洁美观的前端界面,提高用户的交互体验。
网络爬虫的设计
爬虫策略
爬虫算法主要有宽度优先搜索策略、深度优先搜索策略以及最佳优先搜索策略等。最佳优先搜索策略基于宽度优先搜索,按照一定分析算法,或选取与目标网页相似度大于一定值、或选取与爬取主题相关性大于一定值的URLs进行抓取,这种局部抓取策略可能导致很多相关网页被忽略,但是却降低了无关网页的抓取概率,在主题爬虫上得到了广泛的应用。不过本人研究的并非是对某种主题的抓取,而是对搜索引擎的研究,网络爬虫作为搜索引擎中的搜索器,主要功能是为了获取网页数据,数据越多,查找到相关信息的可能性就越大,所以爬取策略可以选择宽度优先或深度优先。
深度优先搜索策略:顾名思义就是沿着一条线一直爬到终点,到终点后,再返回上一个节点接着爬,直到抓取全部网页。但是一个越重要的网页在某个站点中的顺序一般是位于前面的,所以这种爬取策略可能导致抓取很多无用的网页。
广度优先搜索策略:也称为宽度优先搜索策略。从当前网页出发,若指定当前网页的深度为1,则该网页中的URLs里面的网页深度为2,依此类推。宽度优先搜索即先爬取深度为1的网页,再接着爬取为2的网页,依次类推,直到抓取全部网页或者满足退出条件为止。