[IR课程笔记]Web search
一. 搜索引擎
组成部分:
1. 网络爬虫(web crawler) 2. 索引系统(indexing system) 3. 搜索系统 (searching system)
consideration:
1.Economics 2.Scalability 3. Legal issue
二. 网络爬虫(web crawler)
web crawler 需要考虑两个问题:
politeness (遵守robots协议以及不要频繁访问同一个主机)
performance (多线程)
工作过程: 首先我们给爬虫一个初始的种子url集,然后爬虫下载这些url指向的页面,把内容提取出来交给索引系统,把页面中包含的url提取出来加入url池。
一个简易的爬虫算法
UrlsTodo = {‘‘yahoo.com/index.html’’}
Repeat:
url = UrlsTodo.getNext()
html = Download( url )
UrlsDone.insert( url )
newUrls = parseForLinks( html )
For each newUrl not in UrlsDone:
UrlsTodo.insert( newUrl )

front queue 和 back queue 的工作过程:
前向队列: 爬虫从html文件中抽取出url, 如果这个url没有被访问过的话,那么就将它加入队列。将前向队列分成优先级1-N的不同的队列,当有一个url进入时,根据不同的策略,给这个url分配不同的优先级,并加入到对应的队列中。通常,我们将容易变化的网页赋予更高的优先级,如新闻。
后向队列:后向队列的分队方式,同一个主机为一个队列。每一个对列需要存储主机名和上次访问这个主机的时间。当爬虫要爬取一个网页时,从后向队列中以一定的策略抽取url,若访问这个url所在的主机的时间间隔小于最小时间间隔,那么,就暂时不爬取这个网页。
当后向队列有队列为空时,从前向队列中抽取一个url(按照优先级的策略),若这个url所在的主机没有在当前后向队列中,那么就把这个url加入到空的队列中。若这个url的主机已经存在在后向队列中,那么将这个url加入到那个主机的队列。再从前向队列中抽取一个url...
[IR课程笔记]Web search的更多相关文章
- [IR课程笔记]Hyperlink-Induced Topic Search(HITS)
两个假设 1. 好的hub pages: 好的对某个主题的hub pages 链接许多好的这个主题的authoritative pages. 2. 好的authoritative pages: 好的对 ...
- [IR课程笔记]向量空间模型(Vector Space Model)
VSM思想 把文档表示成R|v|上的向量,从而可以计算文档与文档之间的相似度(根据欧氏距离或者余弦夹角) 那么,如何将文档将文档表示为向量呢? 首先,需要选取基向量/dimensions,基向量须是线 ...
- [IR课程笔记]Query Refinement and Relevance Feedback
相关反馈的两种类型: “真实”的相关反馈: 1. 系统返回结果 2. 用户提供一些反馈 3. 系统根据这些反馈,返回一些不同的,更好的结果 “假定”的相关反馈 1. 系统得到结果但是并不返回结果 2. ...
- [IR课程笔记]Page Rank
主要目的: 在网络信息检索中,对每个文档的重要性作出评价. Basic Idea: 如果有许多网页链接到某一个网页,那么这个网页比较重要. 如果某个网页被一个权重较大的网页链接,那么这个网页比较重要. ...
- [IR课程笔记]概率检索模型
几个符号意义: R:相关文档集 NR:不相关文档集 q:用户查询 dj:文档j 1/0风险情况 PRP(probability ranking principle):概率排序原理,利用概率模型来估计每 ...
- [IR课程笔记]统计语言模型
Basic idea 1.一个文档(document)只有一个主题(topic) 2.主题指的是这个主题下文档中词语是如何出现的 3.在某一主题下文档中经常出现的词语,这个词语在这个主题中也是经常出现 ...
- vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结
vue—你必须知道的 目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...
- Andrew 机器学习课程笔记
Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...
- 操作系统学习笔记----进程/线程模型----Coursera课程笔记
操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...
随机推荐
- python 单例模式应用
class Singelton(object): __instance=None def __init__(self): pass def __new__(cls,*kwd,**kwargs): # ...
- 2016.6.21 maven使用cmd新建项目时,failed to execute goal org.apache.maven.plugins:maven-archetye-plugin:2.4:generate...
在学习maven的时候,想要新建一个maven工程,在命令行执行create或generate命令. 错误如图所示: failed to execute goal org.apache.maven.p ...
- 2016.6.20 eclipse安装完毕后打开失败,显示a JDK or a JRE must be avaliable in order to run Eclispe
下载完成后,点击eclipse.exe,跳出如下错误. 按照百度的方法,修改了一下eclispe的配置文件,不仅没解决问题,结果跳出另一个新的错误: Failed to load the JNI sh ...
- DevExpress控件之TreeList
基于v18.1 使用AppendNode方法手动赋值时,首先要添加treeListColumn 默认样式 修改后的样式 1 ...
- 面试题:使用finalkeyword修饰一个变量时,是引用不能变,还是引用的对象不能变?
/* * 问题:使用finalkeyword修饰一个变量时,是引用不能变,还是引用的对象不能变 * 答: * 使用finalkeyword修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内 ...
- eeplat开发平台概念理解
近期在学习eeplat的开发.发现其中有非常多概念实在让人easy忘记,所以谨以此文记录一笔. eeplat的开发文档里说eeplat是元数据驱动的,这个元数据什么意思.在我理解就是后台的数据库里面的 ...
- Allegro skill
https://blog.csdn.net/wyu0725/article/details/52367199 Allegro skill二次开发和更改菜单页面 简单的使用skill;能够使Aleggr ...
- SQL Prompt 编辑
SQL Prompt是一款拥有SQL智能提示功能的SQL Server和VS插件.超级好用的插件,
- Linux内核源码分析方法_转
Linux内核源码分析方法 转自:http://www.cnblogs.com/fanzhidongyzby/archive/2013/03/20/2970624.html 一.内核源码之我见 Lin ...
- LINUX线程初探
LINUX程序设计最重要的当然是进程与线程.本文主要以uart程序结合键盘输入控制uart的传输. 硬件平台:树莓派B+ 软件平台:raspberry 须要工具:USB转TTL(PL2303)+ ...