基於Heritrix+Lucene的搜尋引擎構建(0)——概述

來源:互聯網
上載者:User

系統功能需求:

1.可自訂要搜尋的網站列表;

2.可對目標列表網站的網頁內容進行檢索。

系統主要功能模組:

網路蜘蛛:採集、解析並儲存目標列表網站的內容(網頁)。

全文索引/檢索:為目標列表網站內容建立索引,提供內容的全文檢索索引。

採取方案:

網路蜘蛛——採用開源架構Heritrix,Heritrix是一個爬蟲架構,可加如入一些可互換的組件。下載頁面:http://crawler.archive.org/index.html。如何使用Heritrix可參考相關文獻,也可筆者的《使用Heritrix爬蟲爬取網頁》。這裡不再進行詳細闡述。

全文索引/檢索——該部分基於Lucene實現的。Lucene是apache軟體基金會4 jakarta項目組的一個子項目,是一個開放原始碼的全文檢索索引引擎工具包,即它不是一個完整的全文檢索索引引擎,而是一個全文檢索索引引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索索引的功能,或者是以此為基礎建立起完整的全文檢索索引引擎。Lucene官方網站:http://lucene.apache.org/。

Lucene索引過程的核心類:
IndexWriter :提供對索引的寫入操作
Directory:描述了索引存放的位置
Analyzer:對文本進行分析,提取詞彙(token),剔除無用的資訊
Document:虛擬文檔
Field:每個Document包含一個或多個不同命名的Field,每個Field對應一段資料,這些資料在搜尋過程中可能會被查詢或在索引中被檢索。

範例程式碼: 

Directory dir = FSDirectory.getDirectory(indexDir);Analyzer anlyzer = new SimpleAnalyzer();IndexWriter writer = new IndexWriter(dir, analyzer, true);Document doc = new Document();doc.add(Field.Keyword(“id”, “1000”);doc.add(Field.UnIndexed(“name”, “Yao Ming”);doc.add(Field.UnStored(“intro”, “Yao Ming is a player of Houseton Rockets.”);writer.addDocument(doc);writer.close();

Lucene搜尋過程的核心類:

IndexSearcher:用於搜尋IndexWriter建立的索引
Term:用於搜尋的一個基本單元包括了一對字串元素,與Field相對應
Query :抽象的查詢類
TermQuery:最基本的查詢類型,用來匹配特定Field中包含特定值的文檔
Hits:存放有序搜尋結果指標的簡單容器

範例程式碼:

IndexSearcher searcher = new IndexSearcher(directory);Term t = new Term(“intro”, “Yao”);Query query = new TermQuery(t);Hits hits = searcher.search(query);assertEquals(“JUnit test”, 1, hits.length());

 

在Heritrix下載擷取網頁資源後,需要對網頁內容進行提取,提取網頁內容在java世界中,可以使用HtmlParser或者Jsoup等開源軟體。
HtmlParser——htmlparser是一個純的java寫的html解析的庫,它不依賴於其它的java庫檔案,主要用於改造或提取html。它能超高速解析html,而且不會出錯。:http://sourceforge.net/projects/htmlparser/。

Jsoup——jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML常值內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作資料。官方網站:http://jsoup.org/。

 

在使用Lucene建立索引時,需要進行切詞,lucene內建了一些切詞工具,但主要是面向英文和德文的,中文沒有英文那樣明顯的空格隔開詞彙,因此需要另外加入中文切詞功能。中文分詞相關的工具有很多,比如IKAnalyzer 、ictclas4j、Je—Analyer等。

整個系統主要是基於Heritrix和Lucene實現的,可以基於這兩個架構上搭建和完善搜尋引擎。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.