搜索引擎的设计与实现(二)

目录

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库给我们提供了可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用编辑器代码给模型添加uLipSync组件

由于模型不停更改&#xff0c;需要频繁手动添加uLipSync组件&#xff0c;花时间写了编辑器代码去处理 using uLipSync; using UnityEditor; using UnityEditor.Events; using UnityEngine; using static uLipSync.uLipSyncBlendShape;/// <summary> /// 模型添加uLipSyn…

JavaEE之线程(4)——线程安全、线程安全的原因,synchronized关键字

前言 在本栏的前面的内容中&#xff0c;我们介绍了线程的创建、Thread 类及常见方法、线程的状态&#xff0c;今天我们来介绍一下关于线程的另一个重点知识——线程安全。 一、线程安全 基本概念&#xff1a; 线程安全的确切定义是复杂的&#xff0c;但我们可以这样认为&…

C++语言的字符数组

存放字符数据的数组是字符数组&#xff0c;字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。 1. 声明一个字符数组 char c[5]; 2. 字符数组赋值方式 &#xff08;1&#xff09;为数组元素逐一赋值 c[0]H c[1]E c[2]L c[3]L c[4]O &#xff08;2&…

C语言学习【C语言基本数据类型二】

C语言学习【C语言基本数据类型二】 _Bool类型 C99标准添加了_Bool类型&#xff0c;用于表示布尔值&#xff0c;即逻辑值true和false&#xff0c;原则上仅占用1位存储空间&#xff1b; float、double和long double 记数法示例 C标准规定&#xff0c;float类型必须至少能表示…

2024年去除视频水印的5种方法

如果你从事电影剪辑或者视频编辑工作&#xff0c;你经常需要从优酷、抖音、TikTok下载各种视频片段……。 通常这些视频带有水印和字幕。一些免费软件如CapCut、canva、Filmora也会给你制作的视频打上水印&#xff0c;这些水印嵌入在视频内部。 2024年去除视频水印的5种方法 …

EdgeOne 免费证书快速实现网站 HTTPS 访问

在当今互联网环境下&#xff0c;HTTPS访问已经成为现代网站的必备功能。HTTPS 访问不仅能够更有效地保障用户在访问到网站时的数据安全传输&#xff0c;防止信息泄露、消息劫持等问题&#xff0c;在搜索引擎中&#xff0c;未实现 HTTPS 还会被浏览器提示为不安全网站&#xff0…

迪安诊断数智中心战略与PMO负责人徐黎明受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 迪安诊断技术集团股份有限公司数智中心战略与PMO负责人徐黎明先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“软件研发项目管理指标体系建设实践”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; …

C# WinForm —— 19 PictureBox 介绍

1. 简介 PictureBox 主要用于显示图像&#xff0c;也可以给它注册单击事件&#xff0c;来把它变成一个按钮 2. 常用属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到,一般以 pixB 开头BackColor控件的背景色BackgroundImage控件的背景图像BorderStylePictur…

NSSCTF | [SWPUCTF 2021 新生赛]Do_you_know_http

打开题目后&#xff0c;显示&#xff1a;“Please use WLLM browser!” 说明这里需要伪装为名为WLLM的浏览器&#xff0c;直接Burpsuite抓包 我们需要修改的地方是上面的User-Agent 用户代理&#xff08;User Agent&#xff0c;简称 UA&#xff09;&#xff0c;是一个特殊字符…

鸿蒙系统编译方式

鸿蒙系统编译 编译原理编译方式概述hb编译ohos-buildhb安装编译使用build脚本hpmhpm介绍编译举例说明综合应用举例虚拟机中编译docker中使用hpm编译编译原理 编译构建指导:https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-build-all.md,文档介绍…

VMware虚拟机故障:“显示指定的文件不是虚拟磁盘“,处理办法

一、故障现象 由于虚拟机宕机&#xff0c;强制重新启动虚拟机后显示错误&#xff0c;没有办法启动虚拟机。 虚拟机有快照&#xff0c;执行快照还原&#xff0c;结果也不行&#xff0c;反复操作&#xff0c;在虚拟机文件目录出现很多莫名文件 二、故障原因 根据故障提示&#…

计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目主要包括&#xff1a;物体表面缺陷检测技术项目介绍&#xff0c;数据构造&#xff0c;模型介绍。 物体表面缺陷检测技术是工业自动化…