搜索引擎的技术问题(未完待续)

搜索引擎的技术奥秘

搜索引擎————

在世界上最大的草垛中寻针

搜索引擎已经发展成为每个人上网都离不开的重要工具,但是为何搜索引擎有着如此重要的地位?其技术发展历程是怎样的?其基本目标是什么?核心问题是什么?基本技术架构如何?本文将做尽可能详细的分析与讲解。

搜索引擎提供着超级服务,每个大型的搜索引擎公司都运营者一个由有无数数据中心组成的国际网络,其中包括数以千计的服务器计算机和先进的网络设备。但是如果没有聪明的算法来组织和检索我们请求的信息,所有的硬件都会变得毫无用途。

搜索引擎的两大主要任务是:匹配和排名。

网络搜索的两个阶段匹配和排名,在第一阶段(匹配)后可能会出现数千或数百万个匹配结果,这些结果必须按照相关度在第二阶段(排名)进行排序。搜索引擎会从大量命中里挑出最好的几个,一个好的搜索引擎不仅会挑出最好的几个,而且还会以最有用的顺序显示它们——最匹配的页面排在第一,然后是匹配度排名第二的,以此类推。

下面介绍一下相关商业引擎公司的发展,1995年是商业搜索引擎公司发展的重要起点,背景是:互联网上的Web站点数量首次超过100万,此时的普通用户无法依赖手工浏览的方式来快速获得自己想要的信息。这一年产生了很多曾经风云一时的早期搜索引擎公司。Yahoo、InfoSeek、Fast Search、Alta Vista、Excite等曾经非常著名的搜索引擎公司都创建于1995年。

当初刚刚成立时的Yahoo依靠人工编辑导航目录,将互联网上重要的站点分门别类的整理好,满足人们查找重要网站的需求应时代的需求,从而快速成长为最著名的搜索和门户网站。

搜索引擎技术的发展史可以大致分为这样几代:分类目录à文本检索à链接分析à用户分析。

搜索引擎的3个目标:更全、更快、更准。

搜索引擎的3个核心问题:

1.用户的真正需求是什么   根据数据调查用户输入的查询请求平均长度只有2.7的单词,要从如此短的请求里获知用户的真正需求,这是搜索引擎首先要解决的并且非常重要的问题。即是需要弄懂用户它们搜索的真正意图是什么。

2.哪些信息是和用户需求真正相关的   从数据角度考虑,搜索引擎本质上是一个匹配过程,即从海量的数据里面找到能够匹配用户需求的内容。判断内容和用户查询关键词的相关性一直是信息检索领域的核心研究课题。

3.哪些信息是用户可以信赖的   搜索到的信息是否值得信赖又是另外一个重要的衡量标准。网上发布的信息对象会是由任意用户发布,内容可信与否并无判断标准,也存在恶意的发布信息的情况。在同一个查询的搜索结果内,完全可能存在相互矛盾的搜索答案,此时信息的可信性即成为突出问题。

时间: 2024-10-18 19:41:53

搜索引擎的技术问题(未完待续)的相关文章

[daily][optimize] 去吃面 (python类型转换函数引申的性能优化)(未完待续)

前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了面试官直接打来的电话,问我为啥还没到,我说没人通知我我不知道呀.结果我就直接被他邀请去以访客的身份参加面试了.不知道人力的姑娘是不是认识我,且和我有仇,终于可以报复了... 然后,我终于如约到了,面试官带着我去前台登记.前台的妹子更萌...认为我是面试官,面试官是才是来面试的.我气质真的那么合吗?

JavaWeb ajax编程(未完待续)

1.Ajax 1.1Ajax的定义 Ajax:(Asynchronous JavaScript And XML)指异步 JavaScript 及 XML. 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术,是基于JavaScript.XML.HTML.CSS新用法. Ajax:只刷新局部页面的技术 JavaScript:更新局部的网页 XML:一般用于请求数据和响应数据的封装 XMLHttpRequest对象:发送请求到服务器并获得返回结果 CSS:美化页面

性能测试调优篇---未完待续

性能测试调优一:1.首先,看下选测交易的整个走向纯系统内部交易:选测交易如果是系统内的交易,每一步请求都和系统交互几次,访问了几个数据库,访问了数据库的那几张表??该交易走了那几台机器,这几台机器的网络连接情况是什么样的??这几台机器是通过走的是哪些虚拟网卡,走了哪些路由器??带宽是什么情况??该交易在这几台机器上消耗了多少CPU,内存,及其对磁盘做了多少次的访问??从方法层面,从该交易的发起到结束,起了多少线程,调用了哪些相关的方法以及接口,访问了哪些表???跨系统交易:该交易发起后,每一步请

whatweb.rb 未完待续

#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$. $ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$. $ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

[译]App Framework 2.1 (1)之 Quickstart (未完待续)

最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和兴趣,想到哪写到哪,前面的部分以后慢慢补上. App Framework 前生是是叫 jqMobi 注意大家不要和 jQuery Mobile 混淆了,它们是两个不同的框架,一开始我还真混淆了0.01秒. 这里我先翻译一下Quickstart 部分,一是自己工作上用的上,二是也想顺便练练英文,最关键

数据结构与算法之--高级排序:shell排序和快速排序【未完待续】

高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入元素的左边是有序的,且假如待插入元素比左边的都小,就需要挪动左边的所有元素,如下图所示: ==> 图1和图2:插入右边的temp柱需要outer标记位左边的五个柱子都向右挪动 如图3所示,相比插入排序

git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行.刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了.使用过程中遇到了各种各样的问题,有些小问题就在这里集中总结一下. 1.idea命令行.git安装后就自带终端git bash,使用起来很方便.但是用idea开发,开发后还要在相应文件夹下打开git bash很麻烦.其实idea也带有终端terminal,在最下方可以找到,在这里就可以执行命令.但是如果是默认方式安装的g

Unity3D快捷键 未完待续

Unity3D 点选Object+F Object在当前视角居中 CTRL+1/2 Scene/Game视图的切换 MonoDevelop CTRL+K  删除光标所在行的该行后面的代码 CTRL + ALT +C  注释/不注释该行 CTRL+ DOWN  像鼠标滚轮一样向下拖 CTRL + UP 像鼠标滚轮一样向上拖 CTRL + F  查找该脚本 CTRL + SHIFT + F 查找全部脚本 CTRL + H 替换代码 CTRL + SHIFT +W 关掉所有脚本 Unity3D快捷键

模板区域[未完待续](会定期的更新哦(有时间就更了))

写这个博客目的就是为了记录下学过的模板方便我这焫鷄复习吧//dalao们绕道 近期学的: (1)来自机房学长jjh大神教的求1~n的所有最小素因数和加上本焫鷄的批注 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>//求1~n的最小质因数 using namespace std; const int MAXN=1e6+