[原創]一種基於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節更新

相關文章
相關標籤/搜索