Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267083
  • 博文数量: 107
  • 博客积分: 305
  • 博客等级: 二等列兵
  • 技术积分: 417
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 09:42
文章分类

全部博文(107)

文章存档

2014年(3)

2013年(41)

2012年(34)

2011年(28)

2008年(1)

分类: 架构设计与优化

2014-11-21 10:14:03

        互联网的海量数据信息,使得通用搜索引擎提供给用户的不相关信息太多,垂直搜索引擎专门针对某一类主题信息,以避免通用搜索引擎带来的“噪音”。
        垂直搜索引擎通常由四个部分组成:信息采集模块、索引模块、查询模块和UI模块组成,换句话说即爬虫、索引、查询和web界面。
一、爬虫

1、配置

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

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

2、抓取

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

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

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

3、存储

        以URLKEY存储网页内容到原始网页库(LevelDB)。

4、解析

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

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


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

二、索引       

1、词库

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

2、分词

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

        (1)词库分词

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

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

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

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

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

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

        (E)如果n0则一次分词结束

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

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

        (H)否则转向6

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

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

        (2)统计分词

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

3、打分

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

        PageRankHITS

4、倒排

        以ValueKey,检索URL为倒排。

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

三、检索

1、查询

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

        对返回的文档去重。

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

        反馈排序后结果给用户。

2、反馈

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

        (1)展现反馈

        对整个结果展现反馈一次,参数包括QueryIDPvTimeKeyWord

        (2)点击反馈

        搜索结果每次点击记录一次,参数包括QueryIDPvTimeKeyWordDestinationURL

四、WebUI

1、搜索框

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

2、结果集

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

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

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

3、相关搜索

        相关词汇推荐。


阅读(1949) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~