基于<今日哈工大>新闻的简易搜索引擎设计

简易搜索引擎系统

项目代码见EasySearchEngine , 利用Spark构建倒排索引的版本:EasySearchEngine-V2.0

基本概况

  • 基于Python实现
  • 面向新闻标题、正文
  • 数据抓取自“今日哈工大”网(因为我砍后台没反爬虫)
  • 新闻数量37251个
  • 闲暇之余写的,没啥太高端的东西,权当理解搜索引擎原理。。。

系统架构

main

系统代码目录

DataCrawer:哈工大新闻抓取模块,基于urllib;
DocumentsManager:新闻文档管理模块,提供根据新闻id获得新闻;
SearchFrontEnder:搜索前端模块,主要接受用户输入,切词->查询倒排索引->取出对应文档->排序->输出;
InvertedIndexBuilder:索引器构建模块,对已爬取文档构建倒排索引,按B树形式存储;
IndexSearcher:索引器模块,从B树获取词元对应的倒排索引;
Utils:其他函数;如计算词的IDF等。。。

基本流程

step1:进入DataCrawer目录,分别执行:

python crawlHITnewsUrls.py 进行获取新闻的Urls

python crawlHITnews.py 对新闻进行爬取、存储

step2:进入Documents目录,执行

python createDocumentDir.py 进行分类存储、方便文档管理器进行管理

step3:进入InvertedIndexBuilder目录,执行:

python createSubInvertedIndex.py 创建倒排索引,并按B树存储;

step4:进入Utils目录,执行:

python computeIDF.py 为所有词计算IDF,存起来;

step5:然后搜索引擎就可以使用了,回到主目录,在main.py文件内写自己要搜索的句子,然后执行:

python main.py 得到搜索结果,比如搜索不断提高 哈工大结果如图:

result

相关技术

  • 利用urllib、beautifulSoup来爬取新闻;
  • 利用2-gram进行词元切分,并构建倒排索引;
  • 利用B树做词典,检索倒排索引;
  • 用户输入内容的词元对应索引取交集,获得候选索引;

  • 利用词元的TF*IDF判断新闻内容与用户输入的相似度,对候选索引进行排序,然后选出前K个;
项目代码见EasySearchEngine

利用Spark构建倒排索引的版本见EasySearchEngine-V2.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值