[原创]一种基于Python爬虫和Lucene检索的垂直搜索引擎的实现方法介绍

声明:本文首发在博客园晨星落羽Shulin_Caolvmememe首页,转载请注明出处。php

 

前言html

  2016.5到2017.5,咱们三人(lvmememeShulin_Cao晨星落羽)共同完成了一个本科生科研项目——简体中文版儿童搜索引擎。在作的过程当中咱们发现,搜索引擎的框架其实都差很少,一些技术好比网页爬虫、网页提取、信息检索在大多数垂直搜索引擎中是通用的,只不过数据库中存的资源不一样而已。好比把全网资源都包罗进来,就成了百度,把购物信息包罗进来,就成了淘宝。所以就有了这篇文章,把咱们在作项目的过程当中用到的技术分享出来,但愿可以对搜索引擎感兴趣的朋友有所帮助。本文会详细说明项目中咱们已经实现的功能使用的技术,同时也会阐述一些咱们但愿之后可能会实现的功能。本文指望达到的效果是,一年之后,当我已经忘记如今用到的技术细节,本身再照着这篇文章作,依然能够作出一个一样的搜索引擎。
前端

  事实上,本文介绍的框架是一种最基本的简易框架,项目的完成也不表明项目的完善,咱们还有许多功能鉴于时间限制和自身水平的限制,暂时没有实现。这些功能在文章中也会说起,只是没法展开细讲。尤为是机器学习、人工智能、数据挖掘等技术,在本文中不会涉及,本文关注更多的是网页爬虫(信息获取)、词条排序(信息检索)、前端后端通信(信息展现),用到的语言主要包括Python、Java、PHP和前端网页制做的语言。
java

   目前,项目已经发表了五篇论文,包括三篇中文期刊和两篇国际会议。python

    1. 儿童搜索引擎的现状与分析mysql

    2. 面向搜索引擎的结构化信息生成系统的设计与实现git

    3. 基于 Lucene 与 Socket 通讯的中文搜索引擎的设计与实现github

    4. An Algorithm to Extract and Judge the Main Text Based on the Law of Total Probabilitysql

    5. KidSE: A Search Engine Designed for Children which Supports Simplified Chinese数据库

  其中,第一篇论文目前已经发表,后面四篇已经收到录用通知等待发表。本文的不少想法也都是对论文中的内容进行整合。后续发表后会对论文连接进行更新。

  或许在专业人士看来,本文所讲解的技术也只是几十年前的古老技术,可是咱们写这篇博客的目的也不是炫耀本身的技术有多高超,只是想分享一下本身的成果。但愿大牛们谅解咱们做为低年级本科生水平有限,对于文章的错误,欢迎批评指正,若是有好的想法,也欢迎多多交流!

  项目github:https://github.com/1049451037/kidsearch

  事实上,这篇博客的样例工程并非儿童搜索引擎,按照这篇文章作完以后,会作成一个文章搜索引擎,它经过全网自动判别文章类网页,并提取内容,自动入库,天下文章,皆为我有。是否是很期待?那咱们开始吧!

 

目录

  1. 垂直搜索引擎的介绍

    1.1 垂直搜索引擎的概念

    1.2 垂直搜索引擎的框架设计

  2. 经过Python实现结构化信息获取

    2.1 Python3.5安装以及爬虫须要的环境配置

    2.2 基于宽度优先搜索的网页爬虫演示

    2.3 基于宽度优先搜索的网页爬虫原理讲解

    2.4 通用的网页信息结构化信息提取的方法

    2.5 文章类网页正文提取程序演示

    2.6 网页分类:文章类/非文章类

    2.7 文章类网页提取和判断的原理讲解

    2.8 分布式爬虫的设计与实现

    *2.9 针对特定需求的其余爬虫方法(拓展阅读)

      2.9.1 使用selenium抓取动态网页

      2.9.2 使用Fiddler抓取手机app数据

  3. 经过Lucene对结构化信息进行索引和检索

    3.1 Java以及Lucene的安装与配置

    3.2 Lucene实战:一个简单的小程序

    3.3 Lucene检索原理

    3.4 针对中文检索的问题

    3.5 实例讲解Lucene索引的结构设计

    3.6 Lucene基本检索+关键词高亮+分页

    3.7 高级检索方式(一)

    3.8 高级检索方式(二)

    3.9 词条的更新、添加和删除

    3.10 根据用户反馈动态排序

  4. 服务器的搭建和使用(Windows Server)

    4.1 php+mysql+apache

    4.2 域名

    4.3 https

  5. 经过socket通信提供网页检索服务

    5.1 经过socket把Lucene检索服务变为网页检索服务

    5.2 经过socket发送结构化信息

    5.3 经过设计socket通信模型实现多线程并发访问模式

    5.4 经过socket链接Python爬虫和Lucene实现实时索引和更新

  6. 加入元搜索的功能做为信息检索的补充

    6.1 简单跳转版本

    6.2 实时抓取版本

      6.2.1 根据查询实时抓取网页内容

      6.2.2 将网页信息结构化显示给用户

  7. 经过MySQL实现的功能

    7.1 用户管理

    7.2 搜索历史记录

    7.3 用户留言

  8. 敏感词和停用词过滤的实现

    8.1 Lucene检索的敏感词和停用词过滤

    8.2 前端检索的敏感词过滤的Python实现(针对元搜索)多线程并发

  9.一些小的功能

    9.1 根据搜索历史进行推荐

    9.2 给输入文本框加入语音识别

  10. 文章类搜索引擎demo设计与实现

  11. 网站防止恶意攻击的方法

  12. 将来的研究方向

    12.1 知识图谱、数据挖掘

    12.2 机器学习、天然语言处理

 

更新日志

2017.5.2 21:09 完成目录框架

2017.5.2 21:30 完成1.1节的更新

2017.5.2 23:43 完成1.2节的更新

2017.5.3 9:48 完成2.1节的更新

2017.5.4 0:42 完成3.1节更新

2017.5.5 0:02 完成2.2节更新

2017.5.5 0:20 完成3.3节更新

2017.5.5 12:17 完成3.2节更新

2017.5.5 21:38 完成2.3节更新

2017.5.7 1:27 完成2.5节更新

2017.5.7 1:40 完成3.4节更新

2017.5.8 21:03 完成2.6节更新

2017.5.9 0:37 完成3.5节更新

2017.5.9 18:05 完成2.4节更新

2017.5.9 22:46 完成3.6节更新

2017.5.10 18:58 完成2.7节更新

2017.5.11 14:32 更新目录

2017.5.11 14:43 完成2.9节更新

2017.5.11 23:51 完成3.7节更新

2017.5.12 9:50 完成3.8节更新

2017.5.12 23:34 完成8.2节更新

2017.5.21 13:30 完成5.4节更新

相关文章
相关标签/搜索