百度360必应搜狗淘宝本站头条
当前位置:网站首页 > SEO教程 > 正文

搜索引擎概述 搜索引擎概念及工作原理

gaoyangw 2024-11-05 10:29 24 浏览 0 评论

在现在互联网如日中天的时代,即使你不是互联网行业的人,你也一定会用过谷歌或者百度。因为他们已经影响了我们生活的方方面面,为我们提供了很多的便利。那么在互联网行业的人我们除了使用它们,我们还迫切地想知道它们到底是怎么实现的。


以谷歌和百度为例子。它们都称之为搜索引擎。虽然听起来比较高大上。但实际上他们就是搜索数据用的。但站在数据方面考虑,实际上数据会分为两种:结构化数据和非结构化数据。

  • 结构化数据:简单来说,就是有固定格式固定长度的的数据。平常比较常见的例如Mysql、Oracle数据库等。
  • 非结构化数据:反之,就是无固定格式和长度的数据。例如比较常见的是:Email和文档数据。


按照这两种数据的划分,他们在搜索上也有很大的不同。结构化数据我们可以建立数据库索引来快速的搜索数据。而非结构化的数据搜索。我们主要有两种方式。一种是顺序扫描法,另一种是全文搜索法。下面我们详细介绍一下这两种的区别。


  • 顺序扫描法

顺序扫描法顾名思义,就是按照数据的顺序一步一步地找。找到一个然后就记录该位置。直到所有的数据都要扫描完,才知道要查找的内容都在哪些位置出现过。但这明显有相应的弊端。如果要查找的内容碰巧在数据的最后。那么该方法需要扫描所有的数据,但这之前扫描的数据均无效。这就造成了很大的资源浪费。

  • 全?搜索法

既然我们已经知道顺序扫描法的弊端,那我们应该怎么进?优化呢?因为这样的数据是非结构化的数据。没有办法像结构化的数据做索引来达到快速检索的目的。那我们到底应该怎么办呢?答案很简单。逆向思维。既然非结构化的数据没办法做到,那我们把他们改成结构化的数据不就行了吗。这里改成结构化的数据,并不是将全部的数据都改成结构化。这样将毫无意义。而是将要搜索的内容按照某种方式,做成结构化的数据,然后将结构化的数据创建索引,接着我们在通过这些结构化的索引,来搜索相关非结构化的内容。这就是全?搜索的基本原理。


就像我们在淘宝搜索手机一样,淘宝并不会将所有的数据都按照结构化存储,而是将相应的关键字,按照结构化存储即可。这样当我们命中关键字时,就可以搜索出来我们想要内容。也正是因为这些,所以常常有些人在搜索的时候,喜欢输入很多的修饰词,适当的修饰词是可以准确地帮助我们,找到我们想要的内容,但如果修饰词过多的话,并不会达到我们想要的,因为他检索的本质是命中关键词。这也就是为什么有时我们搜索时,明明加了很多修饰词,居然和我们没有加修饰词搜索出来的内容是一样的原因。

所以谷歌和百度搜索引擎的基本原理就是:网络机器人或者网络蜘蛛通过扫描网页中的内容,提取出相应的关键词,然后为提取出的关键词建?索引,并记录该关键词在文章中位置,当用户搜索时,如果命中该关键词,搜索引擎就根据按照之前的索引进查找,这样可以很快的返回用户想要的数据内容。


下面我们介绍一下现在比较常见的搜索引擎,并介绍详细介绍一下它们之间的区别。

  • Lucene:它归属于Apache软件基金会。它是一个全文检索引擎工具包,所以它并不是一个全文检索引擎。既然是工具包,所以它提供了强大的API功能例如:
  1. 可扩展的?高性能索引
  2. 强?大,准确,?高效的搜索算法
  3. 跨平台解决?方案

由于它只是一个全文检索引擎工具包,所以在使用时,需要我们自行编码。虽然现在也支持了多种语言,但最成熟的开源版本,还是Java。所以要想使用它,我们需要Java的编程基础。

  • Solr:它是一个独立的企业级搜索应用服务器,Solr是基于Lucene的Java库构建的开源搜索平台。并提供了HTTP的方式,创建索引和查询数据。除此之外,它还提供了以下比较高级的功能:
  1. 全?文搜索
  2. 分?面搜索
  3. 实时索引
  4. 动态群集
  • Elasticsearch:它也是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch也是用Java语言开发的。它和Solr一样,除了基本的数据检索功能外,也提供了以下高级的功能:
  1. 分布式搜索
  2. 数据分析
  3. 分组和聚合



下面我们介绍一下,为什么会出现搜索引擎技术,而不是用传统的数据库去实现此功能。

我们知道如果采用传统的数据库,我们可能通过创建索引的方式,去优化我们的查询速度。并且,我们还知道,如果在数据量比较大的话,还可以采用分库分表的方式继续优化。那为什么还会出现类似Elasticsearch这样的搜索引擎技术呢?答案就像我上面介绍的那样。搜索引擎并不会将所有的数据全部按照结构化存储,而是按照相应的关键字存储。并且按照现在的网页数据,不同的网站,内容大不相同,如果采用结构化存储,那么在数据库设计上很难实现。除此之外,我们知道,在数据库中要想快速的查询数据,那么必须要创建相应的索引,但我们在使用SQL语法时,尝尝会因为我们使用不当,或者某些特定的方式,命中不到索引,这就导致使用数据库检索时,会比较慢。比较常见的就是。例如我们在数据库中搜索指定的关键字,并且该关键字的字段我们创建了索引,所以在搜索时,查询的速度很快,因为它命中了索引。但在实际的应用场景中,我们并不会正好输入的关键字就是数据库中存储的,而是采用的是模糊搜索的方式。而在数据库中要想使用模糊搜索,则要使用like关键字。但在使用like关键字时,则索引会失效。除此之外,我们在数据库中创建索引时,并不是越多越好。因为如果索引过多的话,则会影响inster和update的性能。所以,正是因为数据库有种种这样的原因,才会出现全文搜索引擎存在的必要。


下面我们介绍一下全文搜索引擎比较适合的应用场景都有哪些:


  • 搜索数据比较大的非结构化数据。
  • 支持文本数据量达百万级别。
  • 支持交互式?文本的查询。
  • 对写需求比较少的需求,因为全文检索的核心目的就是查询。


以上内容就是本篇的全部内容,在接下来的文章中,我们将重点更新有关Elasticsearch相关的内容,欢迎大家支持,谢谢。

相关推荐

「柒哥说」SEO推广的出路在哪里?(seo的推广技巧)

事情的成败以结果为断,中间的波折不足为论。——佚名随着近年来百度对黑帽优化的持续打击,这几年做优化的公司倒闭了很多,也让很多公司走向了两个极端面,要么放弃做白帽优化,只做付费推广,要么一门心思做白...

使用ESP32-CAM开发板链接OV2640摄像头网页显示

ESP32-CAMOV2640摄像头模块简介下载接线及配置例程说明输出图像总结模块简介本次实验使用的是ESP32-CAM模块,是全新的WIFI+蓝牙双模开发板,内核采用的双核的32位CPU,是基于E...

用golang抓取网页有多简单?(golang做网站)

之前有一个需求需要抓取网络上公开的网页数据,网页的代码大致如下:需要抓取的数据一共4处,结构并没有什么规律,而且分散。但是使用golang却可以很轻松地获取到所需要的数据,而且代码量很少。doc,_...

日本金泽工业大学开发出“追踪用户眼球运动,自动放大网页内容”的技术

据impress网站2月10日报道,日本金泽工业大学于2月宣布,它已经使用AI开发了一个“视线追踪演示系统”。研究人员表示:当视力低下的人或老年人在智能手机或PC上浏览网站时,他们通常会发现遇到难以阅...

前端开发基础课分享1--教你写第一个网页,开启前端大神之路

HTML编辑器推荐可以使用专业的HTML编辑器来编辑HTML,菜鸟教程为大家推荐几款常用的编辑器:VSCode:https://code.visualstudio.com/SublimeT...

2025最新!网页设计行业前沿理念与趋势白皮书

视频直播app和网页版怎么开发?(视频直播app和网页版怎么开发软件)

视频直播APP和网页开发定制的几个功能点:1、直播类软件最主要的功能是支持手机APP端和电脑端视频直播推流,稳定低延迟,保障画面传输流畅、清晰。2、主播直接连麦PK、和用户互动聊天,包括文字和表情等3...

国外网页/移动端手机开发组件ui工具包欣赏

网上有很多可用的webui工具包,让你可以简单的创建一个易于使用的和有吸引力的界面。然而,许多网页设计师都会同意,找到一个好的网页设计工具可以轻松的克服网页设计项目中的挑战。有一件好事是,我们准备了...

你要做的是网页设计,还是前端开发?

很多同学自己的专业,不是网页相关的专业。如不是计算机专业还是设计专业。初学者,傻傻分不清web设计和web开发,就以为"做"几个简单网页就是设计,用ps做几个网页设计稿,就是做网页。这样导致:你不知道...

前端如何开发3D网页?(前端页面实现3d模型)

前言不论是电脑桌面应用,还是Web应用,想要渲染3D模型,都需要显卡的支持。显卡越好,渲染的速度就会越快。质量就会越高。而桌面应用因为直接跟电脑显卡通信对接,使用操作系统提供的图形语言GL,...

#软件开发#(专业软件开发,小程序搭建,APP定制,网页开发)

V:18660225162公司主营APP软件开发、管理系统开发、网站建设、微信开发小程序分销商城等咨询?APP开发:安卓、苹果、h5微信纯开发、区/块/链开发、微商城搭建、办公系统、财务系统、报名系...

学会网页制作,web app开发,你需要掌握这3个编程语言

做软件开发,是从事编程开发工作,必须先从语法基础开始学习,通过语法组成产品效果。前端开发的基础语法,由HTML+CSS+JavaScript组成,这是前端开发最基本的3个语言。网页布局基础:HTML+...

前端对接微信公众号网页开发流程,前期配置

微信公众号网页开发,其实就是我们开发的h5网页需要放到微信浏览器环境中使用,但是需要对接公众号授权,授权之后可以获取到用户的个人信息,以及可以使用公众号提供的一些API,如:图片上传、图片预览、获取位...

想要搭建网页游戏平台 需要多少成本?搭建成本解析

很多人对网页游戏感兴趣,想自己搭建网页游戏平台,那么搭建的成本需要多少,具体有哪些成本呢?今天跟着99SDK小编一起来了解一下!页游平台相比其他平台不一样,页游平台的形式是一个网站,所以我们需要的成本...

网站开发中前端和后端分别是什么(网站开发中前端和后端分别是什么意思)

前端开发和后端开发是为了什么?有什么区别?通俗地说,前端工作用户可以直接看到,而后端开发工作主要在服务器端,用户无法直接看到。虽然前端开发和后端开发有很大的区别,但是为了更好的用户体验,他们的工作是相...

取消回复欢迎 发表评论: