[原创]一种基于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/ ...
随机推荐
- 持续集成接口自动化-jmeter+ant+jenkins(一)
ant 批量执行Jmeter 一.环境准备 1.JDK环境:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.A ...
- CentOS 安装mysql-5.7.10(glibc版)
注:所有shell命令都以root用户执行. 一.下载 shell> cd /home/user/Downloads shell> wget http://mirrors.sohu.com ...
- mac下安装nginx问题解决
需要在mac上安装nginx,按照下面的博客链接一步步安装,但是碰到了些问题.下面写一下我的解决方式. (http://stevendu.iteye.com/blog/1535466) 1. 安装PC ...
- 隐性URL与显性URL区别与SEO考虑
隐性URL与显性URL经常在实现页面跳转的时候用到,这两种方式有什么区别,各自对SEO有什么影响?看一下阿里云的官方文档解释: 显性URL转发: 例如: http://b.com/ 指向 http:/ ...
- windows下的python flask环境搭建
在Windows中搭建flask框架分为如下几步 1. 下载ez_setup.py文件,然后在cmd中执行 链接:http://pan.baidu.com/s/1qXOSeHu 密码:jkbw pyt ...
- 纯Jquery前端分页
---恢复内容开始--- 由于之前自己做过jquery分页,就是调用jni接口时,只能用前台分页解决显示问题.最近看到有人提这样的问题:一个请求传过来上万个数据怎么办?于是萌生了写这篇博客的想法. 效 ...
- 【Unity优化】如何实现Unity编辑器中的协程
Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种 ...
- java学习笔记 --- 面向对象2
一.匿名对象 (1)没有名字的对象 (2)应用场景 A:调用方法,仅仅只调用一次的时候. class Car { //描述属性.颜色,轮胎数. String color; int number; ...
- Java语言定义的线程状态分析
说到线程,一定要谈到线程状态,不同的状态说明线程正处于不同的工作机制下,不同的工作机制下某些动作可能对线程产生不同的影响. Java语言定义了6中状态,而同一时刻,线程有且仅有其中的一种状态.要获取J ...
- web works importScripts
html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...