Tiny search engine

TSE--搜索引擎原型简介

Download as .zip Download as .tar.gz View on GitHub

简介

TSE是根据北大天网的实现原理,实现了一个搜索引擎的原型系统。

系统使用了基础类库包括在https://github.com/feidegenggao/lib

编译TSE前需要修改se根目录下的path.mk文件中

PROJECT_ROOT_DIR=se项目根目录
LIB_DIR=lib类库根目录

TSE由三部分组成:crawl,index_match,search

crawl

抓取网页。网址的起始网址在sites.seeds文件中存放,我们称为种子网址,也就是从这个网址开始搜索。

我们在实现过程中,考虑到了本阶段是原型系统所以抓取网页时仅仅抓取了*.uestc.edu.cn/*

抓取网页的策略为广度优先,深度是一个定值比如搜索深度为10 抓取网页的原始数据存放在doc_(搜索深度).raw

说明: 我们抓取网页的时候为了简化编码方面的处理,仅仅抓取了UTF-8编码的网页。

index_match

分析原始数据,输出文件为:

文档索引(命名为doc.index)每一行的含义:文档ID 文档在raw文件的off_set 文档url的md5值

正向索引(命名为forward.index)每一行的含义:文档ID 分词结果(以空格分开) 正向索引的索引(命名为forward_index.index) 每一行的含义:文档ID 该文档内容在forward.index中的off_set

倒排索引(命名为inverted.index)每一行的含义:关键词 出现该关键词的文档集合(以空格分开)

说明: 分词过程中,仅仅分析了中文,对于非中文字符(比如英文,数字以及英文标点符号)我们简单地进行了过滤处理。

search

最后一步是为用户提供搜索服务,呈现的界面是用php写的,猛击:https://github.com/feidegenggao/SEPortal php把用户要搜索的关键词通过套接字发送给search,search把搜索结果返回给php页面并显示出来。下面简述一下搜索的过程

首先,把用户的关键词进行分词,分成了集合key-words-match-set

其次,遍历集合中的每一个词从倒排索引中找到对应的集合,从而我们可以得到文档ID集合的集合,对这些结合求交集得到一个文档ID结果集合

最后,根据上一步中生成的索引文件生成每个文档ID对应的摘要,返回给php页面

Support or Contact

联系我:< liuxiaofei333 at gmail dot com >