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

news2024/12/26 21:32:28

目录

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.coloradmin.cn/o/1673029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣HOT100 - 70. 爬楼梯

解题思路&#xff1a; 动态规划 注意 if 判断和 for 循环 class Solution {public int climbStairs(int n) {if (n < 2) return n;int[] dp new int[n 1];dp[1] 1;dp[2] 2;for (int i 3; i < n; i) {dp[i] dp[i - 1] dp[i - 2];}return dp[n];} }

Co-Driver:基于 VLM 的自动驾驶助手,具有类人行为并能理解复杂的道路场景

24年5月来自俄罗斯莫斯科研究机构的论文“Co-driver: VLM-based Autonomous Driving Assistant with Human-like Behavior and Understanding for Complex Road Scenes”。 关于基于大语言模型的自动驾驶解决方案的最新研究&#xff0c;显示了规划和控制领域的前景。 然而&…

智能组网实施步骤?

随着信息技术的快速发展&#xff0c;智能组网正在逐渐成为各个行业的关注焦点。智能组网通过将各种设备、终端和系统连接起来&#xff0c;实现信息的传输和共享&#xff0c;从而提升工作效率和运营效益。本文将介绍智能组网的实施步骤&#xff0c;以及一家名为【天联】的智能组…

台式电脑屏幕亮度怎么调节?让你的眼睛更舒适!

在日常使用台式电脑时&#xff0c;调节屏幕亮度是一项常见的需求。不同的环境和个人偏好可能需要不同的亮度设置。因此&#xff0c;了解台式电脑屏幕亮度怎么调节是非常重要的。本文将介绍三种常见的方法&#xff0c;帮助您轻松调节台式电脑屏幕亮度&#xff0c;以满足您的需求…

【C++初阶】第十一站:list的介绍及使用

目录 list的介绍及使用 1.list的含义 2.list的介绍 3.list的使用 1.list的构造 2.list iterator的使用 3.list capacity 4.list element access 5 list modifiers 尾插尾删 和 头插头删 insert 和 erase resize swap clear 6.list sort and reverse 7.list copy vector copy li…

数字化转型:超越信息化,构建数字化营销体系!

在数字化的浪潮中&#xff0c;企业仅仅做好信息化数字能力基础已远远不够&#xff01;那么&#xff0c;还需要什么呢&#xff1f;没错&#xff0c;就是在数字化经营思维的指导下&#xff0c;建立起数字化营销体系和执行方案&#xff01;这是企业在数字时代中立于不败之地的关键…

在cmd中,如何使用cd进入指定文件目录

在cmd中&#xff0c;如何使用cd进入指定文件目录 1.要进入的磁盘与当前磁盘一致 例如: cd C:\Program Files (x86)\Google\Chrome\Application 2.进入到其他磁盘&#xff0c; 例如 cd /d D:\JAVA\codes\01\1.4 或者下面的方式&#xff08;直接输入磁盘F&#xff1a;和文件名…

11.php-fpm模板(监控页面取值)

php-fpm模板(监控页面取值) 开启监控页面配置 #修改php配置文件 vim /etc/php-fpm.d/www.conf pm.status_path /php_status#修改nginx配置文件,添加到nginx配置文件中 vim /etc/nginx/conf.d/default.conflocation /php_status {root html;fastcgi_pass 127.0.…

使用单片机的IO引脚直接驱动段码屏

使用单片机的IO引脚直接驱动段码屏,目的是为了降低成本。这种古老的应用,在低功耗产品中比较多见。 如:水表&#xff0c;燃气表等需要电池供电的产品。 下面纯属个人理解&#xff0c;未经测试。 1/3Duty表示LCD共有3个COM引脚,分别占显示周期的1/3 1/2BIAS表示电压0和VCC 1、…

想半天憋不出几个字?试试AI扩写

大家在写文章时是否也经常这样&#xff1f;想了半天&#xff0c;结果只能写出几个字&#xff0c;但是要求往往又是几百多个字&#xff0c;那么有没有啥工具可以帮我们在原文的基础上扩写一下文章字数&#xff0c;让我们达到字数要求呢&#xff1f; 下面给大家介绍一下如何扩写文…

Rpcx (二):传输

一、Transport 传输 rpcx 可以通过 TCP、HTTP、UnixDomain、QUIC和KCP通信。你也可以使用http客户端通过网关或者http调用来访问rpcx服务。 TCP 这是最常用的通信方式。高性能易上手。可以使用TLS加密TCP流量。 Example: 101basic 服务端使用 tcp 做为网络名并且在注册中心…

什么是Data Lakehouse Architecture(DLA)?企业为何要创建DLA

公司捕获和存储的数据比以往任何时候都多&#xff0c;因为它们依赖数据来做出关键的业务决策、改进服务或产品&#xff0c;或为最终用户&#xff08;客户&#xff09;提供更好的服务。了解各种大数据存储技术对于为商业智能&#xff08;BI&#xff09;、数据分析和机器学习&…

山西教育杂志山西教育杂志社山西教育编辑部2024年第4期目录

课题研究 小学语文随堂小练笔策略研究 陈立固; 3-4 儿童戏剧工作坊载体下小学语文戏剧课堂的建构 郭黎明; 5-6《山西教育》投稿&#xff1a;cn7kantougao163.com 文化生态视域下小学英语教学的传统文化融入 周慧娟; 7-8 基于“主题语境”的初中英语课堂教学研究…

PCIe总线-PCIe简介

一、前言 PCIe总线是由PCI/PCI-X发展而来&#xff0c;但是两者之间有很大的不同。PCI/PCI-X采用的是并行总线&#xff0c;最大支持的频率为PCI-X2.0 的133MHz&#xff0c;传输速率最大仅为4262MB/s。同时使用并行总线&#xff0c;在PCB上也会造成布线资源紧张&#xff0c;线与…

MyBatis——动态 SQL

一、if 标签 <mapper namespace"com.powernode.mybatis.mapper.CarMapper"><select id"selectByMultiCondition" resultType"car">select * from t_car where<if test"brand ! null and brand ! ">brand like #{br…

ARM架构安全特性之标准安全 API

安全之安全(security)博客目录导读 目录 一、机密计算软件 二、Arm机密计算固件架构 三、认证校验 四、Veraison项目 五、独立于语言的安全API 六、平台抽象安全项目&#xff08;Platform AbstRaction for SECurity project&#xff09; 七、可移植平台安全API 八、…

(undone) 什么是马尔可夫链?Markov Chain

参考视频1&#xff1a;https://www.bilibili.com/video/BV1ko4y1P7Zv/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考视频2&#xff1a;https://www.bilibili.com/video/BV1xg4y1K7z4/?spm_id_from333.788&vd_source7a…

Vue3实战笔记(19)—封装菜单组件

文章目录 前言一、封装左侧菜单导航组件二、使用步骤三、小彩蛋总结 前言 在Vue 3中封装一个左侧导航菜单组件是一项提升项目结构清晰度和代码可复用性的关键任务。这个过程不仅涉及组件的设计与实现&#xff0c;还需考虑其灵活性、易用性以及与Vue 3新特性的紧密结合。以下是…

Golang | Leetcode Golang题解之第88题合并两个有序数组

题目&#xff1a; 题解&#xff1a; func merge(nums1 []int, m int, nums2 []int, n int) {for p1, p2, tail : m-1, n-1, mn-1; p1 > 0 || p2 > 0; tail-- {var cur intif p1 -1 {cur nums2[p2]p2--} else if p2 -1 {cur nums1[p1]p1--} else if nums1[p1] > n…

AXI Interconnect IP核用法

本文描述了如何使用Xilinx的Vivado Design Suite环境中的工具来定制和生成AXI Interconnect IP 核。Vivado Design Suite是一个强大的FPGA设计和开发环境&#xff0c;它允许用户定制和配置各种IP核以适应他们的特定设计需求。 以下是针对如何定制IP核的步骤的简要概述&#xf…