什么是垂直搜索引擎?
垂直搜索引擎是针对某一行业的搜索引擎,是搜索引擎的细化和延伸,是对网页库中的某类信息进行一次整合,定向分字段抽取出所须要的数据,再进行二次处理和索引,最后依据用户提交的请求,返回搜索结果。
与普通的网页搜索引擎相比,它们最大的差别是对网页信息进行了结构化信息抽取,也就是将网页的非结构化数据抽取成特定的结构化信息数据,好比网页搜索是以网页为最小单 位,而垂直搜索是以结构化数据为最小单位,这个结构化数据可称为记录。然后,再将这些数据(记录信息)进行进一步的加工处理,如:去重、分 类等,最后分词、索引再以搜索的方式满足用户的需求。非常显然的,这个过程非常像传统的数据库检索。可是,传统的数据库检索,是基于字符串匹配的,没有相关性排序。当然,传统数据检索,也有自己的优势,支持复杂的表连接操作。垂直搜索引擎在这一点上是比較弱的。能够说,垂直搜索引擎是基于现实需求下的通用搜索和数据库检索相互折中的方案。
垂直搜索引擎的一般流程:
定向抓取 ==> 网页信息抽取 ==> 二次处理和分词 ==>索引和检索 ==> 相关性排序
垂直搜索特点:
(1)垂直搜索引擎抓取的数据来源于垂直搜索引擎关注的行业网站:
比方:找工作的搜索引擎 www.deepdo.com 的数据来源于:www.51job.com , www.zhaoping.com , www.chinahr.com 等等;股票搜索引擎 www.macd.cn 的数据来源于: www.jrj.com.cn , www.gutx.com 等股票网站;
(2)垂直搜索引擎抓取的数据倾向于结构化数据和元数据:
比方:我们找工作关注的:职位信息: 软件project师;公司名称,行业名称:软件公司,外包行业等;地点:北京,海淀;
(3)垂直搜索引擎的搜索行为是基于结构化数据的搜索:
比方: 找:海淀 软件project师 的工作等。
为什么我们要开发自己的垂直搜索引擎平台?
(1)Lucene弱点:不支持分布式、速度慢、性能差
(2)垂直搜索引擎,索引的对象是结构化信息(记录),必须支持字段索引和检索,而通用的数据引擎,不支持这方面功能。
(3)自主知识产权
(4)须要支持复杂业务
垂直搜索引擎什么研发?(重点:索引和检索)
(1)业务需求分析和抽象化:
(2)总体架构设计:
数据服务平台模块:负责引擎数据的统一管理,接收带有类型标识的待索引数据和索引过程中产生的用于检索的格式化数据;
CacheServer模块:负责web前端与引擎后台之间的数据交互(接收请求、分析请求),以及缓存检索结果;
MiddleServer模块:转发检索请求,并合并各IndexSearch返回的检索结果,完毕相关性排序;
IndexSearch模块: 分析检索请求 ==> 语素系列 ==> 合并各语素检索结果 ==> [其他过滤] ==>
IndexBuilder模块:依据配置,对输入数据索引,生成倒排索引数据
(3)具体设计和编码:
(4)须要具备的知识点:链表、栈、队列和优先队列、哈希表、、B+树、高速排序、堆排序、基于文件的外排序、倒排索引、多线程和相互排斥、socket编程(select和epoll)、系统编程(文件夹、文件操作和管理)等等。