999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Lucene的全文檢索系統的設計與實現

2010-01-01 00:00:00
電腦知識與技術 2010年1期

摘要:Lucene是一個純Java實現的高性能、可擴展的全文信息檢索工具庫,可以很方便地把它融入到應用程序中來增加索引和搜索功能。該文分析了Lucene的索引機制,探討了Heritrix的結構框架,最后結合實際實例對基于Lucene的全文檢索的應用進行深入研究。

關鍵詞:Lucene;全文檢索;Heritrix

中圖分類號:TP393.07 文獻標識碼:A 文章編號:1009-3044(2010)01-9-03

Design and Implementation of Full-Text Searching System Based on Lucene

ZHANG Pan1, NIE Gang2

(1.College of Information Engineering, Wuhan University of Science Technology Branch, Wuhan 430073,China;2.College of Computer Science, Wuhan University of Science Engineer, Wuhan 430073,China)

Abstract: Lucene is an information retrieval library written in Java with its high performance and easy to scale. It can easily add indexing and searching capabilities to applications. The indexing mechanisms of Lucene were analysis and the frameworks of Heritrix were discussed in this paper. And finally, we developed an application to make a deep study to realize the full text searching based on Lucene.

Key words: Lucene; full text search; Heritrix

互聯網搜索的使用水平可以反映全民的信息處理能力,幾年前有研究發現美國用戶比歐洲用戶的互聯網使用水平領先半年左右,主要是根據誰搜索時平均使用的關鍵詞的個數多。中文用戶的搜索使用水平相對于西文用戶目前仍然處于比較初級的階段,而中文網站搜索功能的缺失也是一個重要的因素。

網站擁有了較多內容后,首先會考慮基于目錄的內容分類,以解決信息快速定位的問題。隨著內容量的進一步增加,很多內容在發表之后就很快被淹沒,成為“信息孤島”,而不斷加深的目錄結構也會讓用戶逐漸失去耐心,這時,關鍵詞檢索的優勢就體現出來了:關鍵詞檢索可以讓處于“信息孤島”狀態的內容以一種更直接的方法提供給用戶。

和基于目錄/分類的樹形結構不同,基于關鍵詞檢索還可以讓內容之間實現網狀的關聯結構,從而大大提高信息的引用密度。基于傳統數據庫的關鍵詞檢索由于性能問題讓很多網站放棄了搜索功能,問題的解決歸根結底還是需要一個全文引擎。而Lucene開源引擎的出現讓這種原來被少數公司掌握的技術得到了迅速的普及。

1 全文檢索開源框架

1.1 全文檢索工具包Lucene

Lucene 是一個基于 Java 的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是為應用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一個開源項目,也是目前最為流行的基于 Java 開源全文檢索工具包。利用它可以輕易地為Java軟件加入全文搜尋功能。Lucene的最主要工作是為文件的每一個字作索引,索引讓搜尋的效率比傳統的逐字比較大大提高,Lucene提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強大之處除了高效和簡單外,是最重要的是使用者可以隨時根據需要自訂功能。該項目的主頁地址是http://lucene.apache.org/ 。

Lucene 軟件包的發布形式是一個 JAR 文件,主要包括以下 JAVA 包。

·org.apache.lucene.document

這個包提供了一些為封裝要索引的文檔所需要的類,比如 Document, Field。這樣,每一個文檔最終被封裝成了一個 Document 對象。

·org.apache.lucene.analysis

這個包主要功能是對文檔進行分詞,因為文檔在建立索引之前必須要進行分詞,所以這個包的作用可以看成是為建立索引做準備工作。

·org.apache.lucene.index

這個包提供了一些類來協助創建索引以及對創建好的索引進行更新。這里面有兩個基礎的類:IndexWriter 和 IndexReader,其中 IndexWriter 是用來創建索引并添加文檔到索引中的,IndexReader 是用來刪除索引中的文檔的。

·org.apache.lucene.search

這個包提供了對在建立好的索引上進行搜索所需要的類。比如 IndexSearcher 和 Hits, IndexSearcher 定義了在指定的索引上進行搜索的方法,Hits 用來保存搜索得到的結果。

目前已經有很多應用程序的搜索功能是基于 Lucene 的,例如 Eclipse 的幫助系統的搜索功能。Lucene 能夠為文本類型的數據建立索引,所以只要能把要索引的數據格式轉化的文本的,Lucene 就能對該文檔進行索引和搜索。例如如果要對一些 HTML 文檔、PDF 文檔進行索引就首先需要把 HTML 文檔和 PDF 文檔轉化成文本格式,然后將轉化后的內容交給 Lucene 進行索引,再把創建好的索引文件保存到磁盤或者內存中,最后根據用戶輸入的查詢條件在索引文件上進行查詢。不指定要索引的文檔的格式也使 Lucene 能夠幾乎適用于所有的搜索應用程序。Lucene索引機制架構如圖1所示。

1.2 開源web爬蟲項目Heritrix

目前開源web爬蟲項目技術選型對象主要有Heritrix 和 Nutch,二者均為Java開源框架。Heritrix 是 SourceForge上的開源產品,Nutch 是Apache的子項目,它們都稱作網絡爬蟲/蜘蛛(Web Crawler),兩者實現的原理基本一致:深度遍歷網站的資源,將這些資源抓取到本地,使用的方法都是分析網站每一個有效的URI(Universal Resource Identifier),并提交Http請求,從而獲得相應結果,生成本地文件及相應的日志信息等。兩者在某些方面存在少許差異,本文所設計的系統主要采用Heritrix。

Heritrix工程始于2003年初,當時的設計目的是開發一個特殊的爬蟲,對網上的資源進行歸檔,建立網絡數字圖書館。Heritrix可以用來獲取完整的、精確的、站點內容的深度復制,包括獲取圖像以及其他非文本內容,抓取并存儲相關的內容,對內容全盤接收,但不對頁面進行內容上的修改。爬蟲通過Web用戶界面啟動、監控、調整,允許彈性的定義要獲取的URI。

Heritrix執行是遞歸進行的,主要步驟如下:

在預定的URI中選擇一個,然后獲取URI分析,歸檔結果,選擇已經發現的感興趣URI,加入預定隊列并標記已經處理過的URI。

Heritrix可以如入一些可互換的組件,主要部件包括范圍部件,邊界部件和處理器鏈三大部件。

范圍部件主要按照規則決定將哪個URI入隊;邊界部件跟蹤哪個預定的URI將被收集和已經被收集的URI,并且選擇下一個 URI,剔除已經處理過的URI;處理器鏈包含若干處理器獲取URI,分析結果,將它們傳回給邊界部件。

Heritrix的其余部件還包括WEB管理控制臺、Crawler命令處理部件和Server cache(處理器緩存)。

大多數單機的WEB應用,都內嵌JAVA HTTP 服務器。 操作者可以通過WEB管理控制臺選擇Crawler命令來操作控制臺;Crawler命令處理部件包含足夠的信息創建要爬的URI;Server cache(處理器緩存)存放服務器的持久信息,能夠被爬行部件隨時查到,包括IP地址,歷史記錄,機器人策略。

Heritrix 的架構示意圖如圖2所示。

2系統設計及實現

2.1 系統架構設計

本文主要通過實現一個簡單的手機產品的搜索引擎系統來說明基于Java的開源框架Lucene和Heritrix在全文搜索系統中的應用。用戶可以通過該系統在網站上搜索他們所需要的詳細手機信息,并能從搜索結果中打開一個有關詳細信息的頁面進行瀏覽。這些手機商品信息由各大IT網站提供的。在本系統中,首先通過網絡爬蟲Heritrix將這些商品信息抓取下來,然后組織整理,構建產品數據庫,同時為各種內容(產品圖片,詳細資料)利用Lucene建立索引,以提供給用戶檢索。最后通過Spring等web框架設計web用戶接口。整個搜索引擎系統的架構如圖3所示。

3.2 系統實現

在選擇抓取的網站時要注意以下幾點:

1) 網站能夠被本程序中的爬蟲(Heritrix)抓取,因為有的網站使用了反爬蟲技術,防止未經授權的爬蟲對其網頁進行抓取。

2) 網站的信息不是由Javascript動態生成的。在web2.0時代的今天,很多網站采用了Ajax技術,利用Javascript來生成內容,這種動態的內容需要在瀏覽器中運行生成,是爬蟲無法獲取到的,因此Ajax技術是對搜索引擎不友好的技術,在選擇網站的時,不應當選擇這類網站。

3) 網站的頁面結構不要當經常變化,最好是用固定的模板生成的,這樣有利于在分析網頁時候,使用較簡單的方式來解析數據。

4) 在選擇網站時候,也應該盡量選擇那些訪問量大,產品數據比較全的站點,這樣抓取的內容也完整些。

綜上幾點,在本系統中選擇了太平洋電腦網的手機信息頁面作為此次抓取的站點。系統設計步驟簡要說明如下:

首先對目標頁面的結構進行分析,獲取爬蟲程序的抓取清單,利用爬蟲程序對頁面抓取完畢后,使用HTMLParser工具來解析網頁,獲取手機產品名,型號,產品屬性信息,圖片地址等內容生成產品信息文件,同時對所有手機產品構建一個產品信息的詞庫,這個詞庫包含所抓取的所有產品的品牌和型號,便于用戶輸入關鍵字時候能夠檢索到它們。當詞庫建立好后,需要把產品信息插入數據庫中,并建立Lucene的索引。系統最終運行效果如圖4所示。

3 總結

本文通過對開源爬蟲組件Heritrix,全文信息檢索工具包Lucene系統結構的研究,設計開發了一個簡單的手機產品的搜索引擎系統,為應用程序添加高效的索引和搜索能力提供一套切實可行的整合方案。隨著當前大量數據的出現,用戶需要從中提取對其重要的信息,搜索引擎將變得越來越重要,基于Lucene的全文搜索也會得到更加廣泛的應用。

參考文獻:

[1] Otis Gospodnetic, Erik Hatcher. Lucene in Action (中文版) [M].北京:電子工業出版社,2007.

[2] Apache Lucene Project [EB/OL]. http://jakarta.apache.org/lucene/. 2009.

[3] Apache Software Foundation. Lucene Query Syntax[EB/OL]. http://lucene.apache.org/java /docs/,2009.

[4] Baeza Yates R, Ribeiro Neto B. Modern Information Retrieval [M].北京:機械工業出版社,2004.

[5] 雷景生,林冬雪,符淺淺.基于改進向量空間模型的Web信息檢索技術研究[J].計算機工程,2005.

主站蜘蛛池模板: 欧美福利在线观看| 亚洲最新地址| 国产精品露脸视频| 国产毛片高清一级国语| 欧美精品高清| av一区二区三区高清久久| 精品久久综合1区2区3区激情| 男女性午夜福利网站| 国产精品一区二区不卡的视频| 国产国拍精品视频免费看 | 欧美国产日韩另类| 国产探花在线视频| 一本一道波多野结衣一区二区| 国产欧美精品一区二区| 欧美区一区| 亚洲精品无码久久毛片波多野吉| 天堂网亚洲系列亚洲系列| 国产丝袜91| 丁香五月激情图片| 亚洲人成人无码www| 国产精品视频999| 国内老司机精品视频在线播出| 色综合久久88色综合天天提莫| 亚洲男人在线天堂| 国产精品污污在线观看网站| 久综合日韩| 亚洲日韩精品无码专区| 女人毛片a级大学毛片免费| 999精品视频在线| 高清视频一区| 欧美国产日韩在线| 久久久久久午夜精品| 亚洲视频免费在线| 99视频全部免费| 四虎免费视频网站| 国产日韩欧美黄色片免费观看| 毛片久久久| 91精品伊人久久大香线蕉| 国产精品欧美日本韩免费一区二区三区不卡| 亚洲欧洲综合| 国产女人爽到高潮的免费视频 | 98超碰在线观看| 国产99视频免费精品是看6| 五月天久久综合国产一区二区| 国产丰满大乳无码免费播放| 国产精品亚洲一区二区三区z| 毛片一级在线| 精品一区二区三区水蜜桃| 欧美日韩成人在线观看| 国产成人超碰无码| 亚洲国产无码有码| 亚洲天堂首页| 欧美特黄一级大黄录像| 综合色亚洲| 熟妇丰满人妻av无码区| 日本三级欧美三级| 国产精品人成在线播放| 久久免费观看视频| 欧美黄网在线| 少妇被粗大的猛烈进出免费视频| 亚洲中文精品久久久久久不卡| 九九这里只有精品视频| www中文字幕在线观看| 制服丝袜 91视频| 久久不卡国产精品无码| 免费无码一区二区| AV网站中文| 熟妇丰满人妻| 国产成人精品视频一区视频二区| 色欲不卡无码一区二区| 激情综合五月网| 中文字幕在线一区二区在线| 国产无遮挡裸体免费视频| 成人第一页| 性色生活片在线观看| 日韩精品一区二区三区免费| 国产激情第一页| 国产毛片网站| 制服丝袜亚洲| 99无码熟妇丰满人妻啪啪| 色噜噜狠狠色综合网图区| 国产欧美日韩综合一区在线播放|