互联网的海量数据信息,使得通用搜索引擎提供给用户的不相关信息太多,垂直搜索引擎专门针对某一类主题信息,以避免通用搜索引擎带来的“噪音”。

垂直搜索引擎通常由四个部分组成:信息采集模块、索引模块、查询模块和UI模块组成,换句话说即爬虫、索引、查询和web界面。
一、爬虫

1、配置

指定URL初始列表、爬取深度、抓取范围(主题相关即指定域名前缀)。

指定并行抓取数、抓取周期

2、抓取

从初始URL开始,广度优先遍历,结合爬取深度和主题相关过滤。

判断URL是否已经抓取,避免重新下载相同页面。

并行抓取URL(MultiCurl),缓存常用域名与IP对应关系,减少域名解析次数。

3、存储

以URL为KEY存储网页内容到原始网页库(LevelDB)。

4、解析

解析下载页面(HtmlCxx),包括标题(title)、超链接(href)、内容(文本内容最长,但要注意刨除脚本代码即标签<script>和</script>之间,,脚本代码与文本相似,程序无法区分)此外,KeyWord、字体标记(大字体、加粗)对关键字的提取很重要。

需要注意页面编码问题,通过<meta>标签获取编码方式,如果编码设置错误,页面文本内容可能会是乱码

根据指定URL前缀来过滤超链接,剩下的再去重后添加URL到等待下载队列,保证爬虫的资源自我发现能力.需要注意相对URL链接问题。

二、索引

1、词库

手工建词库+基于词频统计更新词库。一级词库用于词库管理,二级词库真正用于分词。

2、分词

分词采用词库分词和统计分词相结合,词库分词的优点在于切分速度快、效率高,统计分词的优点在于收录新词(未登录词)。

(1)词库分词

分词算法采用正向最大匹配算法,即以词库为基准,从前往后正向扫描标题或者正文字符串,对扫描的每个词,从词库中寻找最长匹配。

假设S=C1C2C3C4,最大正向匹配算法描述如下:

(A)取一个字C1,在词库中查找C1并保存是否成词标记

(B)再取字C2,判断词库中是否有以C1C2为前缀的词

(C)不存在,则C1为单词,一次分词结束

(D)存在,判断C1C2是否为词,并取以C1C2为首的多个词的个数n

(E)如果n为0则一次分词结束

(F)否则再取一字,判断词库中是否有以C1C2C3为前缀的词

(G)若不存在,则返回最近一次能够成词的C1C2

(H)否则转向6

(I)从字C3开始下一次分词

假设标题为“我是中华人民共和国公民”,词库中有“中华人民共和国”、“中华”、“人民”、“共和国”、“公民”等词,则当扫描到“中”字,就从“中”字开始向后分别取1、2、3……8个字(“中”、“中华”、“中华人”、“中华人民”、“中华人民共”、“中华人民共和”、“中华人民共和国”、“中华人民共和国公”),词表中的最长匹配字符串就是“中华人民共和国”,那么就此切分开,扫描器推进到“公”字,进行下一轮分词。

(2)统计分词

通常词是稳定的字的组合,根据n元语法,字与字相邻同时出现的频率或概率能够较好的反映成词的可信度,即频率越多就越可能是固定的词,简单的例子是统计两个字之间相邻的频率,频率大于某个阈值就认为这两个字组成了一个新词。需要注意的是:这、的、啊之类的词,以滤掉对搜索无用的词组。

3、打分

对文档重要性打分用于检索时排序。

PageRank和HITS。

4、倒排

以Value为Key,检索URL为倒排。

注:以URL为Key,以分词得到的多个关键字为Value,建立的索引为正排索引。

三、检索

1、查询

根据关键词检索文档索引库。

对返回的文档去重。

根据文档打分结果进行排序。

反馈排序后结果给用户。

2、反馈

根据排序后结果渲染反馈:

(1)展现反馈

对整个结果展现反馈一次,参数包括QueryID、PvTime、KeyWord。

(2)点击反馈

搜索结果每次点击记录一次,参数包括QueryID、PvTime、KeyWord、DestinationURL。

四、WebUI

1、搜索框

输入搜索词,提示相关词汇。

2、结果集

分页显示、搜索时长、相关结果集总数。

Table显示每个分页的结果集。

结果记录由标题、链接、摘要、快照组成。高亮显示关键词。

3、相关搜索

相关词汇推荐。

垂直搜索引擎之简单架构相关推荐

  1. 垂直搜索引擎 nutch

    垂直搜索引擎能否赢得市场? 垂直搜索引擎为用户提供的并不是上百甚至上千万相关网页,而是范围极为缩小.极具针对性的具体信息.因此,特定行业的用户更加青睐垂直搜索引擎,是垂直搜索引擎的长期.稳定的群体. ...

  2. 简单垂直搜索引擎入门(java+Lucene)

    一.垂直搜索引擎介绍 垂直搜索引擎是搜索引擎的一种,是搜索引擎的细分和延伸,可以简单地理解为在某个领域的搜索引擎,例如在你的所有文档中搜索相关内容,在你的项目文件中搜索带有"test&quo ...

  3. 【搜索引擎基础知识1】搜索引擎的技术架构

    转自:http://blog.csdn.net/hguisu/article/details/7955985 1. 搜索引擎的分类 搜索引擎按其工作方式主要可分为三种: 分别是全文搜索引擎(Full ...

  4. python 垂直搜索引擎_最火的 Python 到底牛在哪?就业薪资高吗?

    Python是什么呢? Python是一种全栈的开发语言,你如果能学好Python,前端,后端,测试,大数据分析,爬虫等这些工作你都能胜任. 当下Python有多火我不再赘述,Python有哪些作用呢 ...

  5. 基于Python爬虫的垂直搜索引擎设计与实现

    作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路  关注作者有好 ...

  6. 垂直搜索引擎完整实现

    本篇博客是在上一篇<Lucene搜索引擎+HDFS+MR完成垂直搜索>的基础上,在数据收集之后的JSP/Servlet方面,换为SpringMVC框架来实现. 借助SpringMVC技术完 ...

  7. 《SEO的艺术(原书第2版)》——2.6 垂直搜索引擎

    2.6 垂直搜索引擎 垂直搜索(Vertical Search)这一术语有时候被人们用来表示以有限的数据集为中心的专用或者特殊的搜索引擎.主流搜索引擎提供的垂直搜索解决方案包括图片.视频.新闻和博客等 ...

  8. 基于Lucene垂直搜索引擎的研究与开发实践报告

    目录 一.垂直搜索引擎概述 二.项目概述 三.关键技术 3.1 Lucene 3.2 全文检索 四.系统设计 4.1 实现全文检索 4.1.1.Lucene 实现全文检索的流程 4.2 可视化界面设计 ...

  9. 垂直搜索引擎一》前言与需求分析

    1前言 1.1 课题研究的背景 互联网特别是移动互联网的高速发展,网上信息急剧增长,传统的搜索引擎十分适合大众搜索,但是面向特定领域的搜索时,就会有心无力.并且传统搜索引擎采集网页是饥饿扫描式爬虫,难 ...

最新文章

  1. 《C#精彩实例教程》小组阅读09 -- C#数组与集合
  2. Mondrian xml服务mysql_导入Mondrian例子数据库到mysql中 windows环境
  3. CSS样式----块级元素和行内元素
  4. javac编译出现“找不到符号”和软件包不存在的解决
  5. 构造数列中的常见变形总结【中阶和高阶辅导】
  6. EL在java里的意义
  7. pulsar常用命令
  8. Eclipse和Notepad++快捷键
  9. CAN笔记(15) STM32-M4 CAN通讯
  10. UVA 10115 Automatic Editing
  11. Kafka日志清除策略
  12. 安装Windows系统提示Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装到GPT分区
  13. 金蝶K3系统中间层群集部署方案
  14. Xmapp安装配置和连接MySQL
  15. 八皇后算法python_八皇后问题遗传算法实现(python版)
  16. 阿里P9首次公开:阿里面试官都问些什么?
  17. odoo14 Botton按钮标签属性详解及按钮图标使用
  18. ROS1云课- 1 0 2 4
  19. 消防产品在酒店行业的应用
  20. 安卓编程基础——手势编程

热门文章

  1. 缺少对象或列名,或者对象或列名为空。
  2. HTML设置超链接字体颜色和点击后的字体颜色(总结)
  3. C# partial 关键字详解
  4. xUtils使用详解(一)
  5. 人脸框选多种算法的实现
  6. php的图片等比缩放,PHP图片等比缩放的简单示例
  7. Ubuntu中cp: cannot create regular file ‘...‘: Permission denied的解决方案
  8. iSCSI 命名约定
  9. 质谱及其数据分析处理(串联质谱及联用技术)
  10. Lamp安装wordpress(博客系统)