目录
3 搜索引擎的基本原理
3.1搜索引擎的基本组成及其功能
l.搜索器 (Crawler)
2.索引器(Indexer)
3.检索器(Searcher)
4.用户接口(UserInterface)
3.2搜索引擎的详细工作流程
4 系统分析与设计
4.1系统分析
4.2系统概要设计
4.2系统实现目标
前面内容请移步
搜索引擎的设计与实现(一)
免费源代码&毕业设计论文
搜索引擎的设计与实现
3 搜索引擎的基本原理
3.1搜索引擎的基本组成及其功能
图3-1 搜索引擎的基本组成
由上图可知,搜索引擎程序可以化分为搜索器子程序、索引器子程序、检索器子程序以及用户接口子程序等模块;存储器以及存储桶是用来存储所检索到的各种资源的。
搜索引擎程序的组成结构具体如下:
l.搜索器 (Crawler)
搜索器,顾名思义,就是用于在互联网中探索、寻找信息,最终的目的是为了把信息存储在存储单元中的。这种计算机程序,需要日夜不停地处于运行的状态,为的是可以尽可能的更快地搜集更多的新信息,这些信息的种类是多种多样的,包括有HTML格式、XML格式、字处理文档格式以及多媒体信息等等,此外搜索引擎还需要定期更新存储器里的信息。
搜索器 | 即蜘蛛((Spider)程序,它无时无刻不在运行,主要任务是从因特网上搜集各种的信息资源,然后通过压缩处理等手段,使其占用空间变小,最终存到存储库里,为日候的用户检索做准备。 |
索引器 | 把存储库里的信息提取出来,进行识别与分析,根据结果进行分类,然后再建立索引,并进行简单的排队,把结果放在恰当的硬件存储单元里,也就是上文提到的存储桶。 |
检索器 | 当用户进行查询的时候,检索器会通过判断用户输入的请求,在存储桶中进行查找,将查到的结果,根据匹配度、优先度等指标进行最终的排序,呈现给用户最好的结果。 |
用户接口 | 是用户与搜索引擎进行人机交互的界面,既可以用于输入用户的请求,也可以用来返回查找的结果,供用户选择。 |
如今,互联网已经进入了寻常百姓的家中,人们可以自由的发布信息,导致信息更新的很快,只有定时的更新网络上的信息,才能避免使用者搜索信息时的死连接或者是无效连接。现在我们考虑的搜集信息的策略有两种:
表3-2 搜集信息的策略
为了提高信息的发现以及信息的更新速度, 搜索器的实现方法通常会采用分布式、并行计算技术,这样就可以满足商业搜索引擎每天几百万网页的的信息发现了。
2.索引器(Indexer)
索引器,通过阅读所搜集的信息,并进行整理,将信息中的索引项生成索引表,同时还可以用索引项表示文档。索引项有客观索引项以及内容索引项之分:
表3-3 索引项的分类
为了对文档的内容进行区分,通常会给单索引项赋权值,这样就可以用单索引项进行区分了,而且还可以用来得出查询结果与查询目标的相关度。一般使用的方法有:统计学方法、概率学方法以及信息论法。短语索引项的提取,一般会采用统计学的方法或者是概率学的方法甚至是语言学的方法。
索引表,一般会采用由索引项去查找相对应文档的内容,这就是所谓的倒排表 (InversionList)。当然,索引表还会把索引项在文档中出现的位置也记录在表,目的是为了计算索引项之间的关系,究竟是相邻还是接近。
索引器的算法有两种:集中式、分布式,每一种算法都有优点,但也都有其缺点。当搜索的数据量巨大的时候,为了解决跟上信息量上升迅速的难题,必须采取即时索引 (InstantIndexing)的方式,一个漂亮的索引算法,随着索引器的搜索的数据的提升,其性能的优越性就会展露无遗。索引的质量的高低,有时就会完全决定搜索引擎的有效性。
3.检索器(Searcher)
依照用户的查询请求,搜索索引库并快速的检索出所需的文档,然后比较所查到的文档和查询请求之间的相关度评价。最终,根据相关度的高低,将输出的查询结果进行由高到低的排序,还可以实现用户相关性与搜索引擎之间的反馈机制。
检索器的设计,目前已有四种成熟的模型:
混合的模型、代数的模型、以及概率模型、集合理论模型。
4.用户接口(UserInterface)
搜索引擎,目的是为了让用户进行检索信息,所以必须有用户接口,这样才能实现人机交互,从而才能真正的体现搜索引擎的价值。用户接口就是用来进行,将用户的查询请求输入搜索引擎、显示用户的查询结果、更高级的可以提供用户相关性反馈机制,从而更好地实现搜索引擎,其所提供的信息的准确性、合理性等等。 有了用户接口,不仅方便了用户使用搜索引擎,而且使得用户可以更加的高效率、多方式地得到及时的信息。
用户输入接口我们可以分为两类,一种是简单接口,另外一种就是与之对应的复杂接口。
简单接口,就是最为平常的一种交互界面,使用者只能够输入查询信息,不能进行更加精确地查询,而且也没有反馈的功能;
复杂接口,不仅可以提供输入查询信息的文本框,而且使用者还可以对查询得信息进行限制,减小搜索空间,例如,使用逻辑运算符、使用相近、相邻的关系、域名的范围(如.cn、.com)、出现的位置 (如题目、关键字、作者、时间)、搜索文档的字数等等。中国知网、万方数据库等等,都可以提供上述限制,由于不同的公司所用的限制方式不同,会给用户的使用带来一些不便,当前就有一些公司与机构,正在着手制定查询选项的一系列标准。
3.2搜索引擎的详细工作流程
搜索引擎的详细软件内部构成和具体工作流程说明如下:
图 3-2 搜索引擎的内部构件
搜索引擎的工作原理:当我们在一个表单中输入要搜索的内容时,搜索引擎就会根据我们输入的内容在数据库中进行搜索,首先他会匹配各个网页中的头部信息中的关键字,如果这个网站中有这个关键字的话,就会匹配出来;如果没有的话,搜索引擎就会自动过滤掉。简单直白的说,搜索引擎的工作原理就是对已存在的一个大型数据库内的信息资源进行智能化的筛选过程,并将有效的结果反馈给用户。
在这一个过程中无论是谁家的搜索引擎,无论是百度还是谷歌还是雅虎都会采用自己的算法根据一些指标来进行判断,然后暗战关联度。高低从高到低排序。在这一过程中,需要我们在做网站的时候头部关键字部分还有超链接部分
还有在做完网站之后会引入一个文件以便收录,结合一些SEO技术,一个成功的网站是会在排名前五,而且通过一些合理的页面布局,利用不同的工具,还有超链接的设置要合理,避免垃圾链接无用链接。通过让搜索引擎爬你的网站,从而增加网站的流量,为各大站长带来收益。
我们通常会用好多指令查看某一个网站的浏览人数,但是对于每一个搜索引擎又各有各的算法,在百度适用的不一定在谷歌适用。典型的我们会通过查看看site://www.xxx.com 类型的网站,来了解某一个网站的浏览人数。
4 系统分析与设计
4.1系统分析
经过对搜索引擎的研究同时与Lucene自身的特性相结合,将本次设计所需要实现的功能阐述如下:
- 支持桌面文件搜索,格式包括txt、doc、xls和ppt;
- 支持分词查询
- 支持全文搜索
- 能够高亮显示搜索关键字
- 显示查询所用的时间
- 显示搜索历史、过滤关键字
分词查询与全文搜索这两项功能,我们都可以利用Lucene本身自带的库加上相关算法就可以完成设计了,为了使得关键字的高亮度这一问题得到解决,显然,我们需要利用Highlighter的辅助,通过数据库持久化保存数据。
4.2系统概要设计
在我们进行需求分析的时候,制定的用例以及领域模型都可以直接的带入到设计阶段,我们粗略设计的搜索引擎系统的构架如下:
图4-1 系统总体架构
4.2系统实现目标
希望实现一个可用于海量信息快速搜索的个性化引擎,它应该具有快速、便捷和精确等特性,并且能够一目了然而看到搜索耗时,关键字高亮度显示等等个性化效果。实现时希望不需要高配置的硬件资源以及复杂的环境配置或搭建,幸运的是开源Lucene库给我们提供了可能。