[原创]一种基于Python爬虫和Lucene检索的垂直搜索引擎的实现方法介绍
声明:本文首发在博客园晨星落羽,Shulin_Cao和lvmememe首页,转载请注明出处。
前言
2016.5到2017.5,我们三人(lvmememe,Shulin_Cao,晨星落羽)共同完成了一个本科生科研项目——简体中文版儿童搜索引擎。在做的过程中我们发现,垂直搜索引擎的框架其实都差不多,只不过数据库中存的资源不同而已,一些技术比如网页爬虫、网页提取、信息检索在大多数垂直搜索引擎中是通用的。因此就有了这篇文章,把我们在做项目的过程中用到的技术分享出来,希望能够对感兴趣的朋友有所帮助。本文会详细说明项目中我们已经实现的功能使用的技术,同时也会阐述一些我们希望以后可能会实现的功能。本文期望达到的效果是,一年以后,当我已经忘记现在用到的技术细节,自己再照着这篇文章做,依然可以做出一个同样的搜索引擎。
事实上,本文介绍的框架是一种最基本的简易框架,项目的完成也不代表项目的完善,我们还有许多功能鉴于时间限制和自身水平的限制,暂时没有实现。这些功能在文章中也会提及,只是无法展开细讲。尤其是机器学习、人工智能、数据挖掘等技术,在本文中不会涉及,本文关注更多的是网页爬虫(信息获取)、词条排序(信息检索)、前端后端通讯(信息展示),用到的语言主要包括Python、Java、PHP和前端网页制作的语言。
或许在专业人士看来,本文所讲解的技术也只是几十年前的古老技术,但是我们写这篇博客的目的也不是炫耀自己的技术有多高超,只是想分享一下自己的成果。希望大牛们谅解我们作为低年级本科生水平有限,对于文章的错误,欢迎批评指正,如果有好的想法,也欢迎多多交流!
项目的演示网址:http://www.kidsearch.cn/kidsearch/
目录
1. 垂直搜索引擎的框架介绍
2. 通过Python实现结构化信息获取
2.1 爬虫需要的环境
2.2 基于宽度优先搜索的网页爬虫
2.3 通用的网页信息结构化信息提取的方法
2.4 文章类网页提取的方法
...
3. 通过Lucene对结构化信息进行索引和检索
3.1 Lucene的安装与配置
3.2 Lucene基本检索功能的测试
3.3 把结构化信息加入索引并提供检索服务
3.4 站内检索等待条件的检索
...
4. 通过socket通讯提供网页检索服务
5. 通过MySQL实现用户管理和搜索历史记录
6. 加入元搜索的功能作为信息检索的补充
7. 敏感词和停用词过滤的实现
7.1 Lucene检索的敏感词和停用词过滤
7.2 前端检索的敏感词过滤(针对元搜索)
(鉴于篇幅较长,每日24:00之前更新一次)
[原创]一种基于Python爬虫和Lucene检索的垂直搜索引擎的实现方法介绍的更多相关文章
- 基于python爬虫的github-exploitdb漏洞库监控与下载
基于python爬虫的github-exploitdb漏洞库监控与下载 offensive.py(爬取项目历史更新内容) #!/usr/bin/env python # -*- coding:utf- ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- python爬虫工程师各个阶段需要掌握的技能和知识介绍
本文主要介绍,想做一个python爬虫工程师,或者也可以说是,如何从零开始,从初级到高级,一步一步,需要掌握哪些知识和技能. 初级爬虫工程师: Web前端的知识:HTML, CSS, JavaScri ...
- 基于Python爬虫采集天气网实时信息
相信小伙伴们都知道今冬以来范围最广.持续时间最长.影响最重的一场低温雨雪冰冻天气过程正在进行中.预计,今天安徽.江苏.浙江.湖北.湖南等地有暴雪,局地大暴雪,新增积雪深度4-8厘米,局地可达10- ...
- 【原创】编写多线程Python爬虫来过滤八戒网上的发布任务
目标: 以特定语言技术为关键字,爬取八戒网中网站设计开发栏目下发布的任务相关信息 需求: 用户通过设置自己感兴趣的关键字或正则表达式,来过滤信息. 我自己选择的是通过特定语言技术作为关键字,php.j ...
- 一种基于python的人脸识别开源系统
今天在搜索人脸识别的文章时,无意中搜到一个比较开源代码,介绍说是这个系统人脸的识别率 是比较高的,可以达到:99.38%.这么高的识别率,着实把我吓了一跳.抱着实事求是的态度.个人 就做了一些验证和研 ...
- [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)
最近在使用Python爬取网页内容时,总是遇到JS临时加载.动态获取网页信息的困难.例如爬取CSDN下载资源评论.搜狐图片中的“原图”等,此时尝试学习Phantomjs和CasperJS来解决这个问题 ...
- 基于python的爬虫项目
一.项目简介 1.1 项目博客地址 https://www.cnblogs.com/xsfa/p/12083913.html 1.2 项目完成的功能与特色 爬虫和拥有三个可视化数据分析 1.3 项目采 ...
- FocusBI: 使用Python爬虫为BI准备数据源(原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
随机推荐
- Python--定时给Ta讲笑话
受到这篇文章的启发http://python.jobbole.com/84796/,我也动手写了个程序玩一玩. 接口请求说明: 接口请求地址http://api.1-blog.com/biz/bizs ...
- PHP随机生成随机个数的字母组合示例
在很多系统环境下大家都会用到字母组合各种编码,下面推荐大家非常实用的PHP代码. $num由几个字母组合. $s字母包含大小写,可以自己调配大写还小写. <?php function makec ...
- oracle 实例启动报错(ORA-01078: failure in processing system parameters )
在启动Oracle数据库时报错,如下: [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Productio ...
- cuda编程学习3——VectorSum
这个程序是把两个向量相加 add<<<N,1>>>(dev_a,dev_b,dev_c);//<N,1>,第一个参数N代表block的数量,第二个参数1 ...
- 常见排序算法-Python实现
常见排序算法-Python实现 python 排序 算法 1.二分法 python 32行 right = length- : ] ): test_list = [,,,,,, ...
- window.onload 和 $(document).ready(function(){})的区别
这篇作为我的新的起点开始吧,发现年纪大了,记性就不好了,有些东西老是记了忘,忘了百度.在学一些新知识的时候也是这样的毛病,总是重复学习,这样效率真心差!所以决定开始认真写博客! 本来想封装一个预加载的 ...
- React虚拟DOM具体实现——利用节点json描述还原dom结构
前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其 ...
- JQ实战天猫淘宝放大镜
这个特效平时生活中很常见,话不多说先上效果图. 首先布局,遮罩层是这个效果中的重点精华,也就是下面代码中的shade. <style> * { margin:0px; padding:0p ...
- 统一我的博客文章的CSS样式代码
一.前因后果 之前写博客的时候也有写一些CSS代码来美化,不过都是凌乱的,每次再写一篇,又得重头来过去想,或者去拷贝原来的CSS设置.由于逻辑性不强,找一个配套的格式出来要花费不少时间. 今天我把部分 ...
- 老李分享:robotium常用API 2
断言: 具体请查看官网 断言方法assert(robotium特有的断言方式,实际项目中和Junit的assert方法配合使用) void assertCurrentActivity (String ...