天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

當(dāng)前位置:主頁 > 科技論文 > 搜索引擎論文 >

機器人搜索引擎_主題搜索引擎的研究與應(yīng)用

發(fā)布時間:2016-11-10 19:14

  本文關(guān)鍵詞:主題搜索引擎的研究與應(yīng)用,由筆耕文化傳播整理發(fā)布。



成都理工大學(xué) 碩士學(xué)位論文 主題搜索引擎的研究與應(yīng)用 姓名:黃波 申請學(xué)位級別:碩士 專業(yè):地球探測與信息技術(shù) 指導(dǎo)教師:苗放 20070601

摘要

主題搜索引擎的研究與應(yīng)用
作者簡介:黃波,男,1981年9月出生,2004年9月從師于成都理工大學(xué)苗放教授, 于2007年6月畢業(yè)于成都理工大學(xué)地球探測與信息技術(shù)專業(yè)。




搜索技術(shù)的進步使得人類對數(shù)據(jù)、信息、知識進入了前所未有的共享模式。 搜索是虛擬的人類意識。搜索技術(shù)反映個體在特定時期和范圍內(nèi)的行為取向和信 息喜好,無數(shù)搜索的集合和綜合信息最終可以用以推測人類作為整體的文化屬 性。 隨著信息多元化的增長,千篇一律的給所有用戶同一個入口顯然已經(jīng)不能滿 足特定用戶更深入的查詢需求。因此我們需要一個分類細致精確、數(shù)據(jù)全面深入、 更新及時的面向主題的搜索引擎。主題搜索引擎是針對某一特定領(lǐng)域提供的有一 定價值的信息和相關(guān)服務(wù)。以構(gòu)筑某一主題領(lǐng)域的Internet網(wǎng)絡(luò)信息資源庫為 目標,智能地在互聯(lián)網(wǎng)上搜集符合此主題需要的信息資源。其特點就是“專、精、 深”,且具有行業(yè)色彩。 本文在基于Lucene搜索引擎框架的研究和應(yīng)用基礎(chǔ)上,對它的設(shè)計原理和 特色以及評分體系進行深入的研究。Nutch是一個建立在Lucene核心之上的Web 搜索的實現(xiàn)。本文利用Nutch易于擴展的插件機制進行二次開發(fā)。研發(fā)一個第三 方工具把Lucene特殊的數(shù)據(jù)格式轉(zhuǎn)化為可視化的結(jié)構(gòu),以便研發(fā)人員對索引數(shù) 據(jù)進行分析查詢。本文提出按主題行業(yè)分類信息,建立相關(guān)主題詞庫的觀點,更 高效的快速建立主題搜索引擎,并結(jié)合改進的中文分詞技術(shù)進行驗證實現(xiàn)。論述 了主題搜索引擎對行業(yè)應(yīng)用的可適用性。 關(guān)鍵詞:搜索引擎,中文分詞,知識共享,倒排索引,主題詞庫

成都理工大學(xué)碩士學(xué)位論文

The research and application of Topic—specific Search Engine
Introduction of the Author:HuangBo was born on Sep,1 98 1.Under the guidance of Prof.Miao Fang.,he was graduated from College of Information Engineering at Chengdu University of Technology.

ABSTRACT
Search

technology

progress made Search

human
is


sharing unprecedented virtual

access on

data,

information and
technology
Can be

knowledge,

human

consciousness,

search

reflected the behavior

and

information
and

preferences in the individual

specific period,the set of countless search

comprehensive
as a

information

eventually

used to speculate the direction of mankind

whole cultural.
users

With the

growth of multi-information,providing all meet specific
user’S

with the same

entrance


apparently unable to

needs

in-depth inquiry.So we need

topic.oriented search engine which update timely for
a on

Can

classify accurate,comprehensive


and

in?depth,

data.Topic—specific search engine is tied to provide

specific field

certain value of the

information and
resources

related services.The target is to build

intemet

information

resources

in some particular topic area,intelligent gathering the
on

related topic

information

the intemet.Its feature is the”specialized,

sophisticated,deep”and the
This paper based
on

industry
Lucene

background.
search engine framework for the research

and

application,it described in detail the design in the scoring system.Nutch is of lucene.Nutch provide
a a

and

characteristics.It also studies deeply
on

web search implementation which built

the base

complete plug—in mechanism which Can be easily extended


for secondary development.This paper develops lucene special data

third-party tool to visualize the

format,in

order

to

convenience the developers to


analyze and

search the indexing data.This paper raise

view to establish




related topic-dictionary

for all kinds of different related industry,and establish

topic search engine more

efficiently,and certify

it

by the help

of improved that

Chinese word

segmentation

techniques.Then
to

discussed the applicability

the topic search engine applied

some industry.

Keywords:Search

engine,Chinese

Segmentation,Knowledge Sharing,Inverted

index,Topic dictionary

II

獨創(chuàng)性聲明

本人聲明所呈交的學(xué)位論文是本人在導(dǎo)師指導(dǎo)下進行的研究工作及取得的 研究成果。據(jù)我所知,除了文中特別加以標注和致謝的地方外,論文中不包含其

他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得盛壑理王太堂或其他教
育機構(gòu)的學(xué)位或證書而使用過的材料。與我一同工作的同志對本研究所做的任何 貢獻均已在論文中作了明確的說明并表示謝意。

X-P
學(xué)位論文作者導(dǎo)師簽名: 學(xué)位論文作者簽名:

\勿飲
加7年6月
乙日

蒼,胺

學(xué)位論文版權(quán)使用授權(quán)書

本學(xué)位論文作者完全了解盛都堡王太堂有關(guān)保留、使用學(xué)位論文的規(guī)定,
有權(quán)保留并向國家有關(guān)部門或機構(gòu)送交論文的復(fù)印件和磁盤,允許論文被查閱和

借閱。本人授權(quán)盛壑理王太堂可以將學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)
據(jù)庫進行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存、匯編學(xué)位論文。 (保密的學(xué)位論文在解密后適用本授權(quán)書)

學(xué)位論文作者簽名:

事,波 乞滯
‘月1日

第1章引言

第1章引言
1.1搜索技術(shù)對人類的社會意義
最初搜索引擎技術(shù)和資本門檻本身并不高,但隨著人性因素的彰顯而進入深 度競爭階段的互聯(lián)網(wǎng)時代來臨之后,搜索之爭趨于深度競爭,深刻理解搜索對于 人類的社會意義將成為競爭戰(zhàn)略和策略的研判前提。 一、搜索是社會化的信息處理 搜索技術(shù)的發(fā)展使得人類對數(shù)據(jù)、信息、知識的存取運動進入前所未有的共 享模式。在傳統(tǒng)知識的整理層面,搜索技術(shù)的目標是重新建立人類傳統(tǒng)知識的存 取秩序;在新知識的創(chuàng)新生產(chǎn)層面,搜索技術(shù)的目標是促進協(xié)同型知識機制的完 善,進而形成全面大眾全面參與的知識社會;在社會公共生活層面,搜索技術(shù)的 目標是讓自然界人類社會和思維的有用知識實現(xiàn)客觀、公正、高效、完整的共享; 在個人化的網(wǎng)絡(luò)生存層面,搜索技術(shù)的目標是方便個人無后顧之憂的獲得最好的 信息。由上可知,搜索技術(shù)發(fā)展的目標是成為一種綜合而客觀的人類生存系統(tǒng), 從個人和社會層面改變?nèi)祟惖纳鏍顟B(tài)。在不同層面,搜索的要求也會分別側(cè)重 于客觀、準確、及時、深入、創(chuàng)新、聯(lián)系、思想、個性、娛樂、學(xué)習(xí)、教育等不 同的特性要求,人類社會生活有多么豐富多彩,搜索技術(shù)的未來空間就有多么宏 大無窮,搜索門類及其競爭領(lǐng)域就有多么復(fù)雜綜合。在目前搜索發(fā)展階段,大而 全的搜索巨頭占據(jù)搜索舞臺的主角地位,雖然未來多樣化搜索競爭的戰(zhàn)國時代必 然來臨,但是當(dāng)前搜索競爭的基本出發(fā)點還是必須建立在適度集中的搜索格局的 歷史條件之上,Google、百度等搜索巨頭的方向,往往代表了人類搜索技術(shù)基于 現(xiàn)狀的中期方向,其中最為核心的特征便是搜索競爭的深度化。 二、搜索是社會化的信息再生產(chǎn) 搜索技術(shù)進步使得個人、組織和社會面對全新的信息結(jié)構(gòu)和知識模式,也使 得傳統(tǒng)的、現(xiàn)實的、未來的信息面臨全新的個人、組織和社會的需求特征,在兩 者共同影響下,信息生產(chǎn)領(lǐng)域發(fā)生必然的變革,其典型標志便是搜索技術(shù)成為社 會化的信息生產(chǎn)的重要組成部分。搜索技術(shù)使得隱知識更深入快速的轉(zhuǎn)化為顯知 識,使得知識傳播的范圍空前擴大,使得社會性使用知識的權(quán)利空前平等,使得 個人的集合力量得以影響權(quán)威的形成、影響知識分享權(quán)力、影響知識生產(chǎn)過程, 在此基礎(chǔ)上一種基于搜索的無界、高效、平等特性的全新的社會化信息再生產(chǎn)機 制應(yīng)運而生,搜索的過程自身也因為其社會化屬性而產(chǎn)生出人類前所未見的新信 息資源。

成都理丁大學(xué)碩+學(xué)位論文

三、搜索是虛擬的人類意識 人類的社會化特征是實現(xiàn)人類智能化的捷徑,無數(shù)個體的關(guān)系集成、思維行 動及其綜合形成的動態(tài)文化最終構(gòu)成相對整體性的人類群體特征。進而指引全社 會進行人工智能似的思維和進步。以此角度看,搜索技術(shù)反映個體在特定時期和
范圍內(nèi)的行為取向和信息喜好,通過搜索我們獲得了一條體現(xiàn)人類共同文化、時

尚、思維、偏好的新思路,無數(shù)搜索的集合和綜合信息最終可以用以推測人類作 為擬人整體的文化屬性,搜索信息流從某個角度完全可以視同人類社會的部分大 腦思維潛流,如果說過去因為搜索技術(shù)沒有出現(xiàn)我們無法由信息集合的角度感受 人類虛擬大腦的思維流動,那么搜索技術(shù)的進步和成熟,搜索行為和信息的國民 性擴張,帶領(lǐng)我們進入全新的人類自我意識的社會外化過程,通過搜索,人類個 體與人類整體之間可以實現(xiàn)空前暢通的對話。 四、搜索是全新的社會關(guān)系的大生產(chǎn) 搜索從面向信息的表層發(fā)展階段必然向面向社會關(guān)系的深層發(fā)展階段前進, 搜索的目的將不僅僅是對于信息的搜索,同時也是對于社會行為和社會關(guān)系的搜 索。從個體需求角度看,搜索滿足對于信息的個性化需求;從組織需求的角度看, 搜索同時滿足對于信息、社會行為特征和社會關(guān)系的個性化需求。一方面搜索技 術(shù)和服務(wù)的進步使得人類社會的共享型搜索數(shù)據(jù)庫日益龐大,與此相對應(yīng)人類知 識結(jié)構(gòu)秩序的變革也必然日益深入,進一步與此相對應(yīng)人類的基于知識的權(quán)力結(jié) 構(gòu)的變革也必然日益深入。所以,未來社會性的強權(quán)來自龐大的搜索巨頭并不是 杞人憂天。另外一方面,搜索技術(shù)和服務(wù)的進步使得人類社會行為特征和思維流 日益外化,歷年積累的人類搜索進程的龐大數(shù)據(jù)成為搜索巨頭的另外一大權(quán)力來 源,對這一權(quán)力源的監(jiān)控和公開化必然在不遠的將來列于網(wǎng)絡(luò)最重要的議題之 一。由于搜索在社會關(guān)系變化中的外化和監(jiān)控功能,搜索服務(wù)商在社會關(guān)系方面 可以發(fā)揮更大的影響力。從這個角度看,無論是否公開和共享搜索行為數(shù)據(jù),搜 索技術(shù)本身都會自發(fā)的進行社會關(guān)系的大生產(chǎn),只是其中存在是否公開流程、是 否大眾參與、是否分享權(quán)力的不同情況而已【51。

1.2搜索引擎的發(fā)展歷史
在互聯(lián)網(wǎng)發(fā)展初期,網(wǎng)站相對較少,信息查找比較容易。然而伴隨互聯(lián)網(wǎng)爆 炸性的發(fā)展,普通網(wǎng)絡(luò)用戶想找到所需的資料簡直如同大海撈針,這時為滿足大 眾信息檢索需求的專業(yè)搜索網(wǎng)站便應(yīng)運而生了。 現(xiàn)代意義上的搜索引擎的祖先,是1990年由蒙特利爾大學(xué)學(xué)生Alan
Emtage

發(fā)明的Archie。雖然當(dāng)時World Wide Web還未出現(xiàn),但網(wǎng)絡(luò)中文件傳輸還是相



第1章引言

當(dāng)頻繁的,而且由于大量的文件散布在各個分散的FTP主機中,查詢起來非常 不便,因此;klanEmtage想到了開發(fā)一個可以以文件名查找文件的系統(tǒng),于是便 有了Archie。 Archie工作原理與現(xiàn)在的搜索引擎已經(jīng)很接近,它依靠腳本程序自動搜索網(wǎng) 上的文件,然后對有關(guān)信息進行索引,供使用者以一定的表達式查詢。由于Archie 深受用戶歡迎,受其啟發(fā),美國內(nèi)華達System 外,已能檢索網(wǎng)頁。 當(dāng)時,“機器人”一詞在編程者中十分流行。電腦“機器人”是指某個能以 人類無法達到的速度不間斷地執(zhí)行某項任務(wù)的軟件程序。由于專門用于檢索信息 的“機器人”程序像蜘蛛一樣在網(wǎng)絡(luò)間爬來爬去,因此,搜索引擎的“機器人” 程序就被稱為“蜘蛛”程序。 世界上第一個用于監(jiān)測互聯(lián)網(wǎng)發(fā)展規(guī)模的“機器人”程序是Matthew 開發(fā)的World
wide Web Gray

Computing

Services大學(xué)于1993

年開發(fā)了另一個與之非常相似的搜索工具,不過此時的搜索工具除了索引文件

Wanderer。剛開始它只用來統(tǒng)計互聯(lián)網(wǎng)上的服務(wù)器數(shù)量,

后來則發(fā)展為能夠檢索網(wǎng)站域名。與Wanderer相對應(yīng),Martin Koster于1993 年lO月創(chuàng)建了ALIWEB,它是Archie的HTTP版本。ALIWEB不使用“機器人”程 序,而是靠網(wǎng)站主動提交信息來建立自己的鏈接索引,類似于現(xiàn)在我們熟知的
Yahoo。

隨著互聯(lián)網(wǎng)的迅速發(fā)展,使得檢索所有新出現(xiàn)的網(wǎng)頁變得越來越困難,因此, 在Matthew Gray的Wanderer基礎(chǔ)上,一些編程者將傳統(tǒng)的“蜘蛛”程序工作原 理作了些改進。其設(shè)想是,既然所有網(wǎng)頁都可能有連向其他網(wǎng)站的鏈接,那么從 跟蹤一個網(wǎng)站的鏈接開始,就有可能檢索整個互聯(lián)網(wǎng)。到1993年底,一些基于 此原理的搜索引擎開始紛紛涌現(xiàn),其中以JumpStation、The
Worm,和Repository—Based
Software World Wide Web

Engineering(RBSE)spider最負盛名。

然而JumpStation和w聊Worm只是以搜索工具在數(shù)據(jù)庫中找到匹配信息的先后 次序排列搜索結(jié)果,因此毫無信息關(guān)聯(lián)度可言。而RBSE是第一個在搜索結(jié)果排 列中引入關(guān)鍵字串匹配程度概念的引擎。 最早現(xiàn)代意義上的搜索引擎出現(xiàn)于1994年7月。當(dāng)時Michael Mauldin將
John

Leavitt的蜘蛛程序接入到其索引程序中,創(chuàng)建了大家現(xiàn)在熟知的Lycos。

同年4月,斯坦福大學(xué)的兩名博士生,David Filo和美籍華人楊致遠共同創(chuàng)辦 了超級目錄索引Yahoo,并成功地使搜索引擎的概念深入人心。從此搜索引擎進 入了高速發(fā)展時期。目前,互聯(lián)網(wǎng)上有名有姓的搜索引擎已達數(shù)百家,其檢索的 信息量也與從前不可同日而語。 隨著互聯(lián)網(wǎng)規(guī)模的急劇膨脹,一家搜索引擎光靠自己單打獨斗已無法適應(yīng)目

成都理T大學(xué)碩+學(xué)位論文

前的市場狀況,因此現(xiàn)在搜索引擎之間開始出現(xiàn)了分工協(xié)作,并有了專業(yè)的搜索 引擎技術(shù)和搜索數(shù)據(jù)庫服務(wù)提供商。比如國外的Inktomi,它本身并不是直接面 向用戶的搜索引擎,而是向包括LookSmart、MSN、HotBot等在內(nèi)的其他搜索引 擎提供全文網(wǎng)頁搜索服務(wù)。國內(nèi)的百度也屬于這一類,搜狐和新浪用的就是它的 技術(shù)。因此從這個意義上說,它們是搜索引擎中的搜索引擎!玻梗

1.3搜索引擎分類
搜索引擎按其工作方式主要可分為三種,分別是全文搜索引擎、目錄索弓1類 搜索引擎和元搜索引擎。全文搜索引擎是最廣泛也是用得最多的一種,一般所說 的搜索引擎都指的是全文搜索引擎。 全文搜索引擎是名副其實的搜索引擎,具代表性的有Google、Inktomi、百
度、中搜等。它們都是通過從互聯(lián)網(wǎng)上提取的各個網(wǎng)站的信息而建立的數(shù)據(jù)庫中,

檢索與用戶查詢條件匹配的相關(guān)記錄,然后按一定的排列順序?qū)⒔Y(jié)果返回給用
戶,因此他們是真正的搜索引擎。

從搜索結(jié)果來源的角度,全文搜索引擎又可細分為兩種,一種是擁有自己的 檢索程序,并自建網(wǎng)頁數(shù)據(jù)庫,搜索結(jié)果直接從自身的數(shù)據(jù)庫中調(diào)用;另一種則 是租用其他引擎的數(shù)據(jù)庫,并按自定的格式排列搜索結(jié)果。 目錄索引雖然有搜索功能,但在嚴格意義上算不上是真正的搜索引擎,僅僅 是按目錄分類的網(wǎng)站鏈接列表而已。用戶完全可以不用進行關(guān)鍵詞查詢,僅靠分 類目錄也可找到需要的信息。目錄索引中最具代表性的是Yahoo。國內(nèi)的搜狐、 新浪、網(wǎng)易搜索也都屬于這~類。 元搜索引擎在接受用戶查詢請求時,同時在其他多個引擎上進行查詢,并將 結(jié)果返回給用戶。著名的元搜索引擎有InfoSpace、Vivisimo等,中文元搜索引 擎中具代表性的有搜星搜索引擎。在搜索結(jié)果排列方面,有的直接按來源引擎排 列搜索結(jié)果,如Dogpile,有的則按自定的規(guī)則將結(jié)果重新排列組合,如
givisimo。

除上述三大類引擎外,還有以下幾種非主流形式: 1、集合式搜索引擎:如HotBot在2002年底推出的引擎。該引擎類似META 搜索引擎,但區(qū)別在于不是同時調(diào)用多個引擎進行搜索,而是由用戶從提供的4 個引擎當(dāng)中選擇,因此叫它“集合式”搜索引擎更確切些。 2、門戶搜索引擎:如AOL
Search、8SN

Search等雖然提供搜索服務(wù),但自

身既沒有分類目錄也沒有網(wǎng)頁數(shù)據(jù)庫,其搜索結(jié)果完全來自其他引擎。 3、免費鏈接列表:這類網(wǎng)站一般只簡單地滾動排列鏈接條目,少部分有簡



第1章引言

單的分類目錄,不過規(guī)模比起Yahoo等目錄索引來要小得多。 由于上述網(wǎng)站都為用戶提供搜索查詢服務(wù),為方便起見,我們通常將其統(tǒng)稱 為搜索引擎。

1.4搜索引擎組成及工作原理
搜索引擎主要由網(wǎng)絡(luò)蜘蛛,索引器和查詢器三部分組成。
(1)網(wǎng)絡(luò)蜘蛛(Web Spider)的主要功能是從指定的地址或網(wǎng)頁出發(fā)遍歷互聯(lián)

網(wǎng)收集網(wǎng)頁,并沿著任何網(wǎng)頁中的所有URL爬到其它網(wǎng)頁,重復(fù)這過程,并把爬 過的所有網(wǎng)頁收集到頁面存儲庫中。 (2)索引器(Indexer)對收集回來的網(wǎng)頁進行分析,提取相關(guān)網(wǎng)頁信息(包括 網(wǎng)頁所在URL、編碼類型、頁面內(nèi)容包含的關(guān)鍵詞、關(guān)鍵詞位置、生成時間、大 小、與其它網(wǎng)頁的鏈接關(guān)系等),根據(jù)一定的相關(guān)度算法進行大量復(fù)雜計算,得 到每一個網(wǎng)頁(針對頁面內(nèi)容)及超鏈中每一個關(guān)鍵詞的相關(guān)度(或重要性),然后 用這些相關(guān)信息建立網(wǎng)頁索引數(shù)據(jù)庫。 (3)當(dāng)用戶輸入關(guān)鍵詞搜索后,搜索請求經(jīng)過分解,由查詢器(Searcher)從 網(wǎng)頁索引數(shù)據(jù)庫中找到符合該關(guān)鍵詞的所有相關(guān)網(wǎng)頁。所有相關(guān)網(wǎng)頁針對該關(guān)鍵 詞的相關(guān)信息在索引庫中都有記錄,只需綜合相關(guān)信息和網(wǎng)頁級別形成相關(guān)度數(shù) 值,然后進行排序,相關(guān)度越高,排名越靠前。最后由頁面生成系統(tǒng)將搜索結(jié)果 的鏈接地址和頁面內(nèi)容摘要等內(nèi)容組織起來返回給用戶。 搜索引擎的工作流程可以簡化歸結(jié)為以下四個步驟: (1)網(wǎng)上抓取網(wǎng)頁: (2)建立索引數(shù)據(jù)庫: (3)在索引數(shù)據(jù)庫中搜索: (4)對搜索結(jié)果進行處理和排序。 網(wǎng)絡(luò)蜘蛛從互聯(lián)網(wǎng)上抓取網(wǎng)頁,把網(wǎng)頁送入頁面存儲庫,從網(wǎng)頁中提。眨遥, 把URL送入URL數(shù)據(jù)庫,網(wǎng)絡(luò)蜘蛛控制得到網(wǎng)頁的URL,控制網(wǎng)絡(luò)蜘蛛抓取其它 網(wǎng)頁,反復(fù)循環(huán)直到把所有鏈接的網(wǎng)頁抓取完成。這其間也可以控制對網(wǎng)頁索引
的深度和數(shù)目。

系統(tǒng)從頁面存儲庫中得到文本信息,送入索引器模塊建立索引,形成索引庫。 同時進行鏈接信息提取,把鏈接信息(包括錨文本、鏈接本身等信息)送入鏈接數(shù) 據(jù)庫,為網(wǎng)頁評級提供依據(jù)。



成都理丁大學(xué)碩十學(xué)位論文

1.5本文研究內(nèi)容和成果
本文首先對搜索引擎的發(fā)展歷史、現(xiàn)狀、存在的問題及其未來發(fā)展趨勢進行 了探討,提出了基于行業(yè)主題詞庫的搜索引擎的研究思路,對主題詞庫進行優(yōu)化 改進,并把計算所的提供的中文分詞技術(shù)引進nutch中。本文提出按主題行業(yè)分 類信息,建立相關(guān)主題詞庫的觀點,更高效的快速建立主題搜索引擎。 本文對搜索引擎的研究成果如下: (1)本文通過提出按主題行業(yè)分類信息,建立相關(guān)主題詞庫的觀點,選擇性 能好、效率高、經(jīng)濟合理的技術(shù)框架,從而更高效的快速建立主題搜索引擎。 (2)對開源框架lucene的源碼和結(jié)構(gòu)進行了較為深入的研究,并在此基礎(chǔ)上 進行二次開發(fā),研發(fā)一個數(shù)據(jù)管理工具把lucene特殊的數(shù)據(jù)格式轉(zhuǎn)化為可視化 的結(jié)構(gòu),以便研發(fā)人員對索引數(shù)據(jù)進行分析查詢。 (3)對某一主題網(wǎng)站建立索引庫,并進行分析查詢,把自己建立的主題搜索 引擎查詢結(jié)果和網(wǎng)站現(xiàn)有的搜索結(jié)果進行比較分析,得出了較有意義的結(jié)果。

1.6本文組織結(jié)構(gòu)
本論文的總體結(jié)構(gòu)是從理論的分析研究到實踐嘗試的過程,它由四個部分組
成:

第1章:引言。主要通過闡述搜索引擎的社會意義,發(fā)展歷史以及組成和工 作原理,進一步得出研究搜索引擎的必要性和發(fā)展意義。 第2章:主題搜索引擎。講述主題搜索引擎的研究內(nèi)容,發(fā)展現(xiàn)狀和突破創(chuàng) 新點,突出選擇主題搜索引擎作為研究目標的可行性。 第3章:Lucene的實現(xiàn)原理及相關(guān)技術(shù)。通過對開源框架Lucene進行詳細 深入的研究,對實現(xiàn)源碼加以改進,并引入相關(guān)增強用戶體驗的Ajax技術(shù)和中 文分詞技術(shù)來改進搜索引擎。 第4章:主題搜索引擎的實現(xiàn)。通過建立一個實例搜索引擎來加以對比分析。 建立相關(guān)主題詞庫來優(yōu)化索引內(nèi)容,引入計算所的中文分詞處理方式來改進主題 搜索引擎的查詢結(jié)果。



第2章主題搜索引擎

第2章主題搜索引擎
2.1主題搜索引擎研究的目的和意義
搜索是一種服務(wù),外界對搜索引擎的評價體系形式多樣,除了當(dāng)前的競價排 名,未來基于搜索的商業(yè)模式和業(yè)務(wù)模式會在網(wǎng)絡(luò)廣告、電子商務(wù)、付費信息服 務(wù)等方面有所突破,個性化搜索及搜索分析將占主導(dǎo)地位。 選擇研究主題搜索而不是通用搜索引擎的原因: (1)搜索引擎的技術(shù)門檻

越來越高。Google的創(chuàng)始人是超級名校Staaford計算機系的PHI),Baidu的Robin Li也是領(lǐng)了多項搜索技術(shù)專利才敢切入搜索領(lǐng)域。可以說,沒有3年以上的搜 索技術(shù)積累,請不要涉及搜索領(lǐng)域。(2)搜索引擎的資金投入非常大,Google 光是爬蟲服務(wù)器就數(shù)萬之巨,再加上網(wǎng)絡(luò)帶寬的購買,相信這些投入非一般人可 以承受?梢哉f,沒有千萬級別的資金在手,請不要進入搜索引擎領(lǐng)域。(3) 通用搜索引擎經(jīng)過多年的發(fā)展已經(jīng)非常成熟,各個巨頭都已經(jīng)各自占山為王,在 快魚吃慢魚的互聯(lián)網(wǎng)里,落后就意味著無法生存。 隨著信息多元化的增長,千篇一律的給所有用戶同一個入口顯然已經(jīng)不能滿 足特定用戶更深入的查詢需求。同時,這樣的通用搜索引擎在目前的硬件條件下, 要及時更新以得到互聯(lián)網(wǎng)上較全面的信息是不太可能的。針對這種情況,我們需 要一個分類細致精確、數(shù)據(jù)全面深入、更新及時的面向主題的搜索引擎。由于主 題搜索運用了人工分類以及特征提取等智能化策略,因此它將更加有效和準確。

2.2主題搜索引擎的發(fā)展
搜索引擎是上世紀90年代興起的信息檢索技術(shù),經(jīng)過十多年的發(fā)展,它已 經(jīng)滲透到了人們生活的各個領(lǐng)域。然而,傳統(tǒng)的搜索引擎,也即通用搜索引擎, 考慮了所有人的需求,即不管用戶是希望找計算機論文方面的信息還是要找籃球 運動的信息都一致對待,這樣的搜索引擎需要耗費巨大的資源而速度較慢。并且, 由于通用搜索引擎所面向的領(lǐng)域太廣泛,某些利于用戶提高檢索精度和查全率的 技術(shù),比如自動分類,在其中的應(yīng)用效果不理想。 所謂主題搜索引擎,是針對某一特定領(lǐng)域、某一特定人群或某一特定需求提 供的有一定價值的信息和相關(guān)服務(wù)。以構(gòu)筑某一專題或?qū)W科領(lǐng)域的Internet網(wǎng)絡(luò) 信息資源庫為目標,智能地在互聯(lián)網(wǎng)上搜集符合這一專題或?qū)W科需要的信息資 源,能夠為包括學(xué)科信息門戶、專業(yè)信息機構(gòu)、特定行業(yè)領(lǐng)域、公司信息中心、


成都理T大學(xué)碩+學(xué)位論文

行業(yè)專家等等在內(nèi)的信息用戶,提供整套的網(wǎng)絡(luò)信息資源解決方案。其特點就是 “專、精、深”,且具有行業(yè)色彩。它是與通用搜索引擎截然不同的引擎類型。主 題搜索引擎專注具體、深入的縱向服務(wù),致力于某一特定領(lǐng)域內(nèi)信息的全面和內(nèi) 容的深入,這個領(lǐng)域外的閑雜信息不收錄。

2.3主題搜索引擎的突破與創(chuàng)新
主題型搜索引擎與通用搜索引擎存在著很大的差別: (1)服務(wù)目的不同 通用搜索引擎面向任何用戶提供對任何信息的查詢,而主題型搜索引擎則面 向?qū)I(yè)用戶向他們提供對特定專業(yè)的信息檢索。 (2)搜索方式不同 通用搜索引擎對網(wǎng)絡(luò)進行逐頁的爬行,試圖遍歷整個Web。而主題型搜索引 擎則采用一定的策略預(yù)測相關(guān)網(wǎng)頁的位置,動態(tài)的調(diào)整網(wǎng)頁爬行方向,使系統(tǒng)盡 可能的在與主題相關(guān)的網(wǎng)頁集中的地方爬行,這節(jié)約了大量的網(wǎng)絡(luò)資源。 (3)對硬件和網(wǎng)絡(luò)的要求不同 通用搜索引擎對硬件需求高,而主題型搜索引擎由于沒有遍歷整個Web節(jié) 約了大量的網(wǎng)絡(luò)資源,而且沒有自己的大型索引數(shù)據(jù)庫,硬件需求也比較低。 主題搜索引擎的優(yōu)勢,將決定它在互聯(lián)網(wǎng)的一席之地。主題搜索的突破點和
創(chuàng)新點在于: (1).實時性

主題搜索引擎需要獲取的信息來自于某一特定領(lǐng)域的,這比起通用搜索引擎 漫無邊際的信息抓取,有一個非常大的優(yōu)勢,那就是信息的實時性。由于互聯(lián)網(wǎng) 上的信息量非常巨大,通用搜索引擎的數(shù)據(jù)更新周期短則十幾天,長則幾個月, 而主題搜索引擎的數(shù)據(jù)更新完全可以以秒為單位。 (2)數(shù)據(jù)挖掘分析,報表 行業(yè)的歷史發(fā)展、最新動向、趨勢都是行業(yè)從業(yè)人員非常關(guān)注的話題。主題 搜索引擎集中了行業(yè)海量的信息和數(shù)據(jù),基于這些信息和數(shù)據(jù)的商務(wù)智能分析, 將為行業(yè)創(chuàng)造非常有價值的信息增值服務(wù)。 (3)個性化,社會化 查詢服務(wù)只是主題搜索引擎的一部分,主題搜索引擎在用戶的個性化方向的 發(fā)展非常重要。主題搜索引擎不能只提供一個窗口,它應(yīng)該是一個用戶高度參與 交互的社會化平臺。主題搜索引擎需要能夠獲取并且分析用戶的偏好信息,從而 提供更加完善而且準確的數(shù)據(jù)服務(wù)。 (4)智能化語義網(wǎng)


第2章主題搜索引擎

語義網(wǎng)將有可能成為下一代互聯(lián)網(wǎng),這樣網(wǎng)絡(luò)上的數(shù)據(jù)和信息將被計算機程 序所理解。這將為主題搜索引擎提供一個巨大的機會,爬蟲程序如果能理解網(wǎng)絡(luò) 上的數(shù)據(jù),將對信息的收集和整理更加準確和專業(yè),搜索服務(wù)的查全率和查準率
將更高。

(5)多元化查詢 目前的搜索引擎,都只局限于關(guān)鍵字搜索,其中主要的原因是,對用戶的查 詢需求無法建模,無法模式化。而關(guān)鍵字搜索帶來的問題是,搜索結(jié)果過多,并 且不準確;ヂ(lián)網(wǎng)信息量越大,這種情況越嚴重,甚至可以說是災(zāi)難。多元化查 詢服務(wù)的提供,將會成為對抗競爭對手的殺手锏。 主題搜索引擎有著自己獨特的架構(gòu)(如圖2.1),有針對該相關(guān)主題領(lǐng)域的 主題詞庫,以供在建立索引時能夠更加集中的把相關(guān)信息給予更高得評分。并隨 時更新詞庫。

——————一查詢k——一 l接El I
查詢,返回結(jié)果 查詢?nèi)論?用戶 l查詢?nèi)罩?br />
索引信 息庫


計算機專業(yè)詞

建立倒排 索引
自動 更新

,,

文檔過濾、 特征提取

計算機

蘭警E
檔集

主題詞



I#Ⅱ±目甘口

爬蟲

原始信

息庫 圖2.1主題搜索引擎架構(gòu)
Fig.2-1 Framework of Topic-specific search engine



成都理。r人學(xué)碩士學(xué)位論文

2.4主題搜索引擎的國內(nèi)外研究現(xiàn)狀
主題搜索引擎大都處于研究和試驗階段,利用它搜索的結(jié)果再經(jīng)過專業(yè)人士

的加工而形成的面向某一學(xué)科、領(lǐng)域的網(wǎng)絡(luò)垂直門戶網(wǎng)站己經(jīng)出現(xiàn)。目前面向主
題的網(wǎng)絡(luò)信息搜索主要有兩種技術(shù):is]

一是基于內(nèi)容的搜索。這類搜索方式是傳統(tǒng)的信息檢索技術(shù)的延伸。它的主 要方式就是在搜索引擎內(nèi)部建立一個針對主題的詞表,搜索引擎的爬行器根據(jù)其 內(nèi)設(shè)的詞表對網(wǎng)上的信息進行索引。各個不同的系統(tǒng)詞表建設(shè)的復(fù)雜度也大不相 同,F(xiàn)在這種詞表的建設(shè)越來越多的引入了知識表示的方法;诒倔w論 (ontology)的搜索引擎開始出現(xiàn)。一個本體強調(diào)相關(guān)領(lǐng)域的本質(zhì)概念,同時也強 調(diào)這些概念間的本質(zhì)聯(lián)系。以ontology為基礎(chǔ)建立的詞表能更好的顯示一個領(lǐng)域 主題中各個概念(即搜索系統(tǒng)的檢索詞)之間的關(guān)系,能更好的表現(xiàn)一個主題。在 www的智能信息檢索應(yīng)用中,ontology通常作為用戶感興趣領(lǐng)域的領(lǐng)域模型, 同時還作為文檔統(tǒng)一注釋的知識表示語言。一些學(xué)者也提出了概念空間的理論, 用概念空間來實現(xiàn)語義索引。所謂概念空間是某個領(lǐng)域中一組抽象概念的集合, 并且這組概念之間存在一定的語義上的關(guān)聯(lián);诟拍羁臻g的文本檢索系統(tǒng)也較 好地解決了信息檢索過程中的詞匯不匹配的問題以及信息過載的問題,大大提高
了信息檢索的效率和質(zhì)量。

二是基于鏈接分析的檢索。90年代末期,國外信息檢索界開始以social network為模型對互聯(lián)網(wǎng)進行模擬。一些學(xué)者認為網(wǎng)頁之間的鏈接指引關(guān)系同社 會網(wǎng)絡(luò)中的關(guān)系有相似之處,尤其與傳統(tǒng)的引文索引非常相似。通過對鏈接進行 分析,可以找出各個網(wǎng)頁之間的引用關(guān)系,由于引用網(wǎng)頁與被引用網(wǎng)頁在內(nèi)容上 一般都比較相關(guān),所以就可以很容易地按照引用關(guān)系將大量網(wǎng)頁分類。在美國, 很多基于這種超鏈分析的檢索系統(tǒng)原形己經(jīng)產(chǎn)生,應(yīng)用于他們的數(shù)字圖書館系統(tǒng)
中。

下面介紹一些較具有代表性的系統(tǒng)。
(1)Elsevier的Scirus系統(tǒng)

Scirus科學(xué)搜索引擎是一種專為搜索高度相關(guān)的科學(xué)信息而設(shè)計的搜索引 擎,獲得2001《搜索引擎觀察》授予的“最佳專業(yè)搜索引擎”獎。Scirus是目前 互聯(lián)網(wǎng)上最全面、綜合性最強的科技文獻門戶網(wǎng)站之一。它只面向包含有科學(xué)內(nèi) 容的網(wǎng)站,如大學(xué)和作者個人主頁以及Elsevier自己的數(shù)據(jù)庫。
(2)Berkeley的Focused Project

這個系統(tǒng)由一個印度裔的科學(xué)家S.Charkrabarti帶頭從事,他是最早從事這 方面研究的人之一。該系統(tǒng)通過兩個程序來指導(dǎo)爬行器:一個是分類器Classifier,

lO

第2章主題搜索引擎

用來計算下載文檔與預(yù)訂主題的相關(guān)度:另一個程序是凈化器Distiller,用來篩選 那些指向很多相關(guān)資源的頁面(也稱中心網(wǎng)頁)。 (3)NEC研究院的CiteSeer Citeseer是~個非常有名的針對計算機科學(xué)領(lǐng)域論文的檢索系統(tǒng)。Citeseer
的核心是ACI(Automatically Citation index)M,它可以自動地對互聯(lián)網(wǎng)上的電子

文件(Postscript和PDF等格式)進行索引并分類。 (4)美國國家科學(xué)數(shù)字圖書館的Collecfion
Building

Program(CBP)

這個項目旨在為科學(xué)、數(shù)學(xué)、工程和技術(shù)創(chuàng)建大規(guī)模的在線數(shù)字圖書館,試 圖研究在某一主題上資源自動建設(shè)的可能性。CBP具有自己的特點:第一,因為 CBP是面向教育、面向教學(xué)的,所以主題精確度比覆蓋度更重要;第二,CBP不 存儲資源原文,而只是提供URL;第三,CBP只需要用戶最少量的輸入,如關(guān)鍵 詞,系統(tǒng)就可以全自動的將有關(guān)該主題的最相關(guān)的有限數(shù)量URL返回給用戶。

成都理工大學(xué)碩十學(xué)位論文

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)
3.1

Lucene的框架結(jié)構(gòu)
Lucene是一個高性能、可伸縮的信息搜索庫。它可以為自己的應(yīng)用程序添

加索引和搜索能力。Lucene是用java實現(xiàn)的成熟的、免費的開源項目,是著名 的Apache大家庭的一員,并且基于Apachc軟件許可。同時,Lucene是當(dāng)前與 近幾年內(nèi)非常流行的免費的Java信息搜索庫。其實現(xiàn)框架(如圖3-1)

圖3-1
F;g.3-1

Luoene應(yīng)用框架
AppI ied

fra㈣rk

in Lucene

Lucene是一個軟件庫,一個開發(fā)工具包,而不是一個具有完整特征的搜索 應(yīng)用程序。它本身只關(guān)注文本的索引和搜索,并且這些功能完成的非常好。Lucene 使得應(yīng)用程序只針對它的問題域來處理業(yè)務(wù)規(guī)則,而把復(fù)雜的索引和搜索實現(xiàn)隱 藏在一組簡單易用的API之后?梢园眩蹋酰悖澹睿逭J為成一層,而應(yīng)用程序位于它
之上。

Lucene并不關(guān)心數(shù)據(jù)的來源、格式、甚至它的語言,只要它能轉(zhuǎn)換成文本。 這意味著能夠利用Lucene來索引和搜索以下格式的文件:遠程WEB服務(wù)器上 的web頁面,存放在本地文件系統(tǒng)中的文檔,簡單文本文件,MS.word文檔, HrML或PDF文件,以至于其它任何能夠抽取出文本信息的文件格式。同時

12

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

Lucent能夠索引存儲在數(shù)據(jù)庫中的數(shù)據(jù),給予用戶許多數(shù)據(jù)庫都不能提供的全 文檢索功能。Lucent提供了一些核心類用于在應(yīng)用程序中增加索引和搜索功能。
3.1.1

Lucene的詳細結(jié)構(gòu)分析

使用Lucent提供的API來做基礎(chǔ)開發(fā)需要熟悉它的開發(fā)流程結(jié)構(gòu)(如圖3.2)

圖3-2

Lucane的流程圖
in Lucena

Fig.3-2 FIOW chart

Lucene十分精練純粹,僅一個jar包,可以直接引用到工程中,通過調(diào)用其 接口,就可以為應(yīng)用增添全文檢索功能。Luccne使用起來很簡單,與JDBC有 些類似。Lucene的結(jié)構(gòu)很清晰,每個package司職一項,且Luccne的主要動作 都采用了抽象類,擴展起來十分方便。相對于一些商業(yè)化全文檢索,Luccne的 入庫速度更快。因為它的存儲采取分步合并的方法,先建立小索引,待時機成熟 才把小索引合并到大索引樹上。Lucent性能穩(wěn)定,使用簡單。因此,我們在操 作應(yīng)用數(shù)據(jù)時可以同步進行全文檢索庫的操作而不會影響系統(tǒng)的效能。 Lucene的組成結(jié)構(gòu)分析:對于外部應(yīng)用來說索引模塊(index)和檢索模塊
(search)是主要的外部應(yīng)用入口:
表3-1
Tab e3-1 Lucene

API類包結(jié)構(gòu)
UCOll0

Structure of I

AP I

成都理工大學(xué)碩十學(xué)位論文 查詢分析器 存儲結(jié)構(gòu) 底層IO/存儲結(jié)構(gòu) 一些公用的數(shù)據(jù)結(jié)構(gòu)

org.apache.Lucene.queryParsed org.apache.Lucene.document/ org.apache.Lucene.store/

org.apache.Lucene.util/

對文檔進行索引,Lucene提供了五個基礎(chǔ)的類,他們分別是Documem,Field,
IndexWriter,Analyzer,Directory。

Document:描述文檔,文檔可以是html,tXt等等,它由Field組成。可以把 Document看成記錄,Field看成字段. Field:文檔的屬性,比如文檔的標題。 Analyzer:在一個文檔被索引之前,首先需要對文檔內(nèi)容進行分詞處理,這 部分工作就是由Analyzer來完成的。Analyzer類是一個抽象類,它有多個實現(xiàn)。 針對不同的語言和應(yīng)用需要選擇適合的Analyzer。Analyzer把分詞后的內(nèi)容交 給IndexWriter來建立索引。 IndexWriter:是Lueene用來創(chuàng)建索引的一個核心的類,作用是把一個個的 Document對象加到索引中來。 Directory:這是一個抽象類,它目前有兩個實現(xiàn),第一個是FSDireetory, 它表示一個存儲在文件系統(tǒng)中的索引的位置。第二個是RAMDirectory,它表示 一個存儲在內(nèi)存當(dāng)中的索引的位置。 下面主要介紹lucene的各個文件包詳細組成

1、org.apache.1ucene.document
以下介紹兩種主要的類:

a)org.apache.1ucene.document.Document:
Document文檔類似數(shù)據(jù)庫中的一條記錄,可以由好幾個字段(Field)組成,

并且字段可以套用不同的類型(詳細見b)。Document的幾種接口(表3—2):

…超巳魚
ield tring get(String

Tab I e3-2 Document

{——每連——
nterface

表3-2 Document接口

field)一

name)一 ield getField(String nanle) ield[】getFields(String

琴加一,字段.塑ieId)到Document—8P— 隊文檔中獲得_個字壁塑空塑塞查
』由字段名獲得字段值

na薔了——碼字段名獲得字段值的藁

b)org.apache.1ucene.document.Field 即上文所說的“字段”,它是Document的片段section。
14

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

Field的構(gòu)造函數(shù): Field(String Banle,String string,boolean
8t01.e,boolean index,boolean

token)。

Indexed:如果字段是Indexed的,表示這個字段是可檢索的。 Stored:如果字段是Stored的,表示這個字段的值可以從檢索結(jié)果中得到。 Tokenized:如果一個字段是Tokenized的,表示它是有經(jīng)過Analyzer轉(zhuǎn)變后 成為一個tokens序列,在這個轉(zhuǎn)變過程tokenization中,Analyzer提取出需要進 行索引的文本,而剔除一些冗余的詞句。Token是索引時候的基本單元,代表一 個被索引的詞,例如一個英文單詞,或者一個漢字。因此,所有包含中文的文本 都必須是Tokenized的。
2、org.apache.Lueene.index

以下介紹兩種主要的類: org.apache.Lucene.index.indexWriter是將文檔加入索引,同時控制索引過程
中的各種參數(shù)。 org.apache.Lucene.index.indexReader刪除索引中不要的文檔

IndexWriter的構(gòu)造函數(shù)有三種接口,針對目錄Directory、文件File、文件 路徑String三種情況。
例如IndexWfiteKString path,Analyzer
a’boolean

create),path為文件路徑,a

為分析器,create標志是否重建索引(true:建立或者覆蓋己存在的索引,false: 擴展已存在的索引。)
一些重要的方法:

表3-3 Index的函數(shù)
TabIe3—3 Index function

旦壟

!多蓮

…t(D…ocume~nt旦盟
Indexes(Directory[]dirs)

鎏引添加二坌文檔
蔣目錄中已存在索引添加到這個索}

。。。”ぃ。。。。。。。。。。。!旦。。。。。。!
ptimize

牌提償!堡曼f逐墊堊!整全塞!
并索引并優(yōu)化 閉



10se0

IndexWriter為了減少大量的10維護操作,在每得到一定量的索引后建立新的 小索引文件,然后再定期將它們整合到一個索引文件中,因此在索引結(jié)束時必須 進行wirter.optimize0,以便將所有索引合并優(yōu)化。
3、org.apache.1ucene.analysis

Analyzer分析器主要工作是篩選,一段文檔進來以后,經(jīng)過它,出去的時候 只剩下那些有用的部分,其他則剔除。而這個分析器也可以自己根據(jù)需要而編寫。

成都理T大學(xué)碩士學(xué)何論文

org.apache.1ucene.analysis.Analyzer:這是一個虛構(gòu)類,以下兩個接口均繼承
它而來。

org.apache.1ucene.analysis.SimpleAnalyzer:分析器,支持最簡單拉丁語言。 org.apache.1ucene.analysis.standard.StandardAnalyzer:標準分析器,除了拉丁 語言還支持亞洲語言,并在一些匹配功能上進行完善。在這個接口中還有一個很
重要的構(gòu)造函數(shù):StandardAnalyzer(String[】stopWords),可以對分析器定義一些

使用詞語,這不僅可以免除檢索一些無用信息,而且還可以在檢索中定義禁止的 政治性、非法性的檢索關(guān)鍵詞。
4、org.apache.1ucene.search

(1)org.apache.1ucene.search.indexSearcher是Lucene中最基本的檢索工具,所 有的檢索都會用到IndexSearcher檢索工具,但是在使用IndexSearcher之前,還 要做一些準備工作,即對檢索工具IndexSearcher進行初始化。 初始化IndexSeareher,需要設(shè)置索引存放的路徑,這樣才能讓查詢器定位索 引,用于后面進行搜索。如下為一個實例化IndexSearcher的過程:
Searcher searcher=new IndexSearcher(indexDir);

返回的結(jié)果是IndexSearcher類的一個實例,indexDir表示索引文件的存放路徑。 以下是IndexSearcher的所有構(gòu)造函數(shù):
public

IndexSearcher(String path)throws IOException{

this(IndexReader.open(path),true); )
public

IndexSearcher(Directory directory)throws lOException{

this(IndexReader.open(directory),true); }
public

IndexSearcher(IndexReader r){

this(r,false); }
private

IndexSearcher(IndexReader r,boolean closeReader){

reader=r:

this.eloseReader=eloseReader;



可以看到,IndexSearcher一共提供了四種構(gòu)造函數(shù)來初始化一個IndexSearcher 對象。第一個方法最為簡單,它直接使用了索引存放的路徑作為參數(shù)來構(gòu)造對象。 第二種方式則是使用Directory類型的對象來構(gòu)建IndexSearcher第三種是直接使 用IndexReader來初始化一個IndexSearcher?qū)ο。第四種則是在第三種的基礎(chǔ)上 加了一個布爾型的開關(guān),用于判斷在關(guān)閉lndexSearcher時是否要關(guān)閉所帶的 IndexReader?qū)ο?梢钥闯,實際上,無論傳入的參數(shù)類型是什么,IndexSearcher 最終都還是使用IndexReader來做為實際的索引目錄讀取器。前三種構(gòu)造函數(shù)均



第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

首先根據(jù)傳入的參數(shù)生成一個IndexReader?qū)ο,然后調(diào)用了第四種構(gòu)造方法來 完成kndexSearcher的初始化工作。 (2)org.apache.1ucene.search.query只是Lucene的search包中的一個抽象類, 這個抽象類有許多子類,代表了不同類型的檢索。如常見的TermQuery就是將 一個簡單的關(guān)鍵字進行封裝后的對象,類似的還有BooleanQuery,即布爾型的查 找。 搜索流程中的第二步就是構(gòu)建一個Query。Query的中文意義就是“查詢”。 在Lucene中,它是一個很重要的概念,就是指對于需要查詢的字段采用什么樣 的方式進行查詢,如模糊查詢、語義查詢、短語查詢、范圍查詢、組合查詢等。 正是因為Query的存在,Lucene才有了非常豐富的查詢語言。 在使用Query之前,需要首先生成一個Query對象。Lucene既允許直接生成 一個Query類型的對象,也允許使用QueryParser類的parse0方法來返回一個 Query類型的對象。這兩種方法在功能上是完全一樣的,只是后者在使用時更方 便一些,而前者則更為靈活. 當(dāng)用戶輸入一個關(guān)鍵字,搜索引擎接收到后,并不是立刻就將它放入后臺開 始進行關(guān)鍵字的檢索,而應(yīng)當(dāng)首先對這個關(guān)鍵字進行一定的分析和處理,使之成 為一種后臺可以理解的形式,只有這樣,才能提高檢索的效率,同時檢索出更加 有效的結(jié)果。那么,在Lucene中,這種處理,其實就是構(gòu)建一個Query對象。 IndexSearcher?qū)ο蟮模螅澹幔颍悖璺椒ㄖ锌偸切枰粋Query對象(或是Query子類的 對象),下面來介紹各種Query類。

按詞條搜索--TermQuery
“與或”搜索--BooleanQuery 在某一范圍內(nèi)搜索—_RangeQuery 使用前綴搜索--l'refixQuery 多關(guān)鍵字的搜索--PhraseQuery 使用短語綴搜索--PhrasePrefixQuery 相近詞語的搜索--FuzzyQuery 使用通配符搜索--WildcardQuery TermQuery是最簡單、也是最常用的Query。TerrnQuery可以理解成為“詞 條搜索”,在搜索引擎中最基本的搜索就是在索引中搜索某一詞條,而TermQuery 就是用來完成這項工作的。 在Lucene中詞條是最基本的搜索單位,從本質(zhì)上來講一個詞條其實就是一個名/ 值對。只不過這個“名”是字段名,而“值”則表示字段中所包含的某個關(guān)鍵字。 要使用TermQuery進行搜索首先需要構(gòu)造一個Term對象,示例代碼如下:

17

成都理工大學(xué)碩十學(xué)位論文

Term aTerm。new

Term(”contents”,。3ava”);

然后使用aTerm對象為參數(shù)來構(gòu)造一個TermQuery對象,代碼設(shè)置如下:
Query query=new TermQuery(aTerm);

這樣所有在“contents”字段中包含有“java”的文檔都會在使用TermQuery進 行查詢時作為符合查詢條件的結(jié)果返回。 (3)org.apache.1ucene.search.hits是搜索結(jié)果的集合類,搜索并處理返回結(jié)果。 在構(gòu)建完Query對象后,就可以使用前面已經(jīng)初始化好的IndexSearcher工具來 進行檢索了。IndexSearcher提供了良好的檢索接13,用戶只需簡單地將Query 對象傳入,就可以得到一個返回結(jié)果。當(dāng)然,這個過程看似簡單,其中也有許多 值得思考的問題,如檢索結(jié)果的排序、過濾等。 在搜索完成之后,就需要把搜索結(jié)果返回并顯示給用戶,只有這樣才算是完 成了搜索的任務(wù)。在Lucene中搜索結(jié)果的集合是用Hits類的實例來進行表示的。 所有的search方法都返回一個類型為Hi協(xié)的對象。 Hits對象中主要有以下幾個經(jīng)常使用的方法。 lengthO:返回搜索到結(jié)果的總數(shù)量。
doc(int n):返回第n個文檔。 id(int n):返回第n個文檔的內(nèi)部ID號。

score(n):返回第n個文檔的得分。 其中,length()方法和doc(intn)方法共同使用,就可以遍歷結(jié)果集中的所有 文檔記錄。不過有一點值得注意,如果一個結(jié)果集含有100000條記錄,而Hits 對象一次性就把檢索結(jié)果全部返回,那么這個Hi協(xié)對象的結(jié)果就會大不一樣。 它并不是一次性將所有的結(jié)果返回,而是采取一種懶惰的方式來加載返回結(jié)果, 即當(dāng)用戶將要訪問某個文檔的時候,Hits對象在內(nèi)部對Lucene的索引又進行了 一次檢索,才將這個最新的結(jié)果返回給用戶。 3.1.2評分機制 評分其實是搜索引擎中很重要的概念,通常情況下,當(dāng)用戶輸入一個關(guān)鍵字, 搜索引擎接收到信息后即可開始進行搜索。對于檢索到的結(jié)果,需要按一定的順 序返回給用戶。因此需要引入一種機制來對檢索結(jié)果進行排序,以便更加合理的 將結(jié)果返回給用戶BOl。 評分機制就是對檢索結(jié)果按照某種標準進行評估,然后按分值的高低來對結(jié) 果進行排序。同時,對于一個商用的搜索引擎,評分機制是其收入來源的主要部 分,例如某公司向搜索引擎交納一定的費用,該搜索引擎將其搜索結(jié)果中關(guān)于該 公司的信息部分權(quán)值加大,以便在返回結(jié)果給用戶時讓該公司獲得更加靠前的位
1S

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

置,這種做法增加了用戶瀏覽該公司網(wǎng)頁和產(chǎn)品的機會,無形之中給該公司帶來 了更大的社會影響和潛在的商機。因此,采用何種評分機制,從各方面來說都是
非常重要的。

Lucene的對各文檔的得分是在用戶進行檢索時實時計算出來的,如果在建立 索引時就已經(jīng)給每個文檔的得分計算好,那么當(dāng)用戶輸入任何關(guān)鍵字時,得分最 高的文檔都會被排在返回結(jié)果的最前面,這顯然不合理。因此所有文檔的得分應(yīng) 當(dāng)都與用戶輸入的關(guān)鍵字有關(guān)系,而且是實時運算的結(jié)果。

芝:礦(f
t/n窖

in

d)+idf(t)4 boost(t.field

in

d)+lengthNorm(t.field

in

d)

通過這個評分公式得到的只是原始的得分,但由Hits對象返回的關(guān)于某一文 檔的評分卻不一定是其原始的得分。因為,評分最高的文檔的得分如果超過了 1.0,那么接下來的所有評分都會以這個評分為標準進行計算,因此所有Hits對 象的得分都只能小于或等于1.0。

表3-4評分公式中的因子說明
Table3-4 Introduction ofthe
score

formula

因素
tf(t in d)

在公式中的作用描述

詞條t在文檔d中出現(xiàn)的次數(shù),查詢關(guān)鍵詞出現(xiàn)的頻
率越高,文檔的得分就越高

idf(t)

詞條t在文檔中的倒排詞頻,.這個函數(shù)表示的是t在
所有文檔中一共在多少個文檔中出現(xiàn)過。因為文檔出現(xiàn) 的次數(shù)越少就越容易定位,所以文檔數(shù)越少,得分就越 高

boost(t.field

in

d)
in

在索引過程中設(shè)置的文字字段參數(shù) d)

lengthNorm(t.field

字段的標準化值,表明在字段中存儲了多少詞條, 這個數(shù)值是在索引過程中計算出來的,并且也存
儲在索引中

coord(q,d)

協(xié)調(diào)因子,它的計算是基于文檔d中所包含的所 有可供查詢的詞條數(shù)量,查詢詞q在在文檔d中
命中的個數(shù)越多,則該因子也就越大 這個函數(shù)是一個調(diào)節(jié)因子,不影響具體的排序情況。主
要是用來讓排序結(jié)果在不同的查詢條件之問可以比較

queryNorm(q)

在公式中加入加權(quán)因子(boost factor),可有效地對某個查詢或某一域給評 分帶來的影響施加控制。Lucene在索引時,顯式地通過boost(t.field
in d)來設(shè)置

某個域的加權(quán)因子。該加權(quán)因子的默認值為1.0。在索引期間,也可以為Document 對象設(shè)置加權(quán)因子。它隱式地把該文檔中所有域的初始加權(quán)因子都設(shè)置為指定

19

成都理工大學(xué)碩士學(xué)位論文

值。特定域的加權(quán)因子是初始加權(quán)因子的倍數(shù),經(jīng)過一定處理后才最終得出該域 加權(quán)因子的值。在索引過程中,有可能多次將同一域添加到同一個文檔中,在這 種情況下,該域的加權(quán)因子就等于該域在這個文檔的所有加權(quán)因子之和。 在這個公式中除了一些明確的因子外,其他一部分作為查詢標準(queryNorm) 的因子可以在每次查詢的基礎(chǔ)上計算出來。Query對象本身對匹配文檔的評分也 會產(chǎn)生一定的影響。加權(quán)處理某一Query對象僅在應(yīng)用程序執(zhí)行多重子旬的查詢 時比較有效;如果只搜索單個項,加權(quán)處理該項相當(dāng)于同時對所有匹配該項的文 檔都進行了相同比例的加權(quán)。在多重子句的布爾查詢中,一些文檔可能只匹配其 中的一個子句,使用不同的加權(quán)因子可以用來區(qū)分不同的查詢條件。Query對象
加權(quán)因子的值也默認為1.0。

在這個評分公式中,對絕大多數(shù)因子的控制都是通過Similarity實例來實現(xiàn) 的。如果不另外指定,在默認的情況下Lucene會用DefaultSimilarity來實現(xiàn) Similarity類。此外,DefaultSimilarity類還負責(zé)處理評分中更多的計算過程,例 如,項頻率(term丘equeney)因子就是實際頻率的平方根。索引過程中改變加權(quán) 因子或使用了Similarity類的方法后,為了同時協(xié)調(diào)所有的相關(guān)因子,應(yīng)用程序 需要對索引進行重建。 Lucene的搜索結(jié)果默認按相關(guān)度排序,這個相關(guān)度排序是基于內(nèi)部的Score
和DoclD,Score又基于關(guān)鍵詞的內(nèi)部評分和做索引時的boost。默認Score高

的排前面,,如果Score一樣,再按索引順序,先索引的排前面。那么如果要先索 引的排后面,只要構(gòu)造一個SortField[]就可以實現(xiàn)該功能 //評分降序,評分一樣時后索引的排前面
new

SortField[]{SortField.FIELD

SCORE,flew

SortField(null,SortField.DOC,true)}

∥評分升序,評分一樣時后索引的排前面,此為最不相關(guān)的排前面
new

SortField[]{new SortField(null,SortField.SCORE,true),new SortField(null,SortField.DOC,

true))

Lucene中的相似度排序主要是在org.apache.1ucene.search包下的Similarity 類中定義的,Similarity是一個抽象類,默認的相似度排序算法是在 DefaultSimilarity類中實現(xiàn)。除了內(nèi)置的得分算法外,Lucene還提供了一種方法 來改變每個文檔的得分。初始化Document后,使用了Document的setBoost方 法來改變一下文檔的boost因子。這種做法的實際目的是將文檔的得分乘以這個 因子,以這個新的數(shù)作為文檔的得分。

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

3.1.3倒排索;

倒排文件就是把文檔到詞的關(guān)系倒排成詞到文檔的關(guān)系。倒排文件機制是一 種面向單詞的索引機制,利用它可以提高網(wǎng)絡(luò)檢索速度。倒排文件結(jié)構(gòu)由詞匯和 出現(xiàn)情況兩部分組成。對于每個單詞,都有一個列表(稱為詞匯列表)來記錄單詞 在所有文本中出現(xiàn)的位置,這些位置可以是單詞的位置(是文本中的第幾個單詞) 也可以是字符的位置(是文本中的第幾個字符)。在倒排索引中,詞匯表對空間的 需求相對較小。 倒排索引源于實際應(yīng)用中需要根據(jù)屬性的值來查找記錄。這種索引表中的每 ~項都包括一個屬性值和具有該屬性值的各記錄的地址。由于不是由記錄來確定 屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引。索引文件為了 使得以項為基礎(chǔ)的搜索更加有效而儲存有所有項的統(tǒng)計數(shù)字。Lueene的索引使 用的就是倒排索引的索引方式,這是因為,這種索引方式是從特定的關(guān)鍵字可以 列出所有包含它的文檔,與通常方式的由文檔列出所有關(guān)鍵字正好是反過來的。 Lucene是一個高性能的java全文檢索工具包,它使用的是倒排文件索引結(jié) 構(gòu)。該結(jié)構(gòu)及相應(yīng)的生成算法如下: 設(shè)有兩篇文章1和2 文章1的內(nèi)容為:RuifivesinBeOhag,IliveinBeringtoo.
文章2的內(nèi)容為:I
once

lived in Shanghai.

1油于lucene是基于關(guān)鍵詞索引和查詢的,首先我們要取得這兩篇文章的關(guān)
鍵詞,通常我們需要如下處理措施

a.我們現(xiàn)在有的是文章內(nèi)容,即一個字符串,我們先要找出字符串中的所有 單詞,即分詞。英文單詞由于用空格分隔,比較好處理。中文單詞間是連在一起 的需要特殊的分詞處理。 b.文章中的“in'’,‘'once…'too”等詞沒有什么實際意義,中文中的“的“是”等 字通常也無具體含義,這些不代表概念的詞可以過濾掉 c用戶通常希望查“Hve'’時能把含“lives”,“lived'’的文章也找出來,所以需要 把“lives'’,“lived”還原成“livC’ d.文章中的標點符號通常不表示某種概念,也可以過濾掉 在lucene中以上措施由Analyzer類完成 經(jīng)過上面處理后 文章1的所有關(guān)鍵詞為:[Rui】【live]【Beijing]【live】【Bering] 文章2的所有關(guān)鍵詞為:【I】[1ive】【shanghai】

2l

成都理T大學(xué)碩士學(xué)位論文

2)有了關(guān)鍵詞后,我們就可以建立倒排索引了。上面的對應(yīng)關(guān)系是:“文章 號”對“文章中所有關(guān)鍵詞”。倒排索引把這個關(guān)系倒過來,變成:“關(guān)鍵詞”對“擁 有該關(guān)鍵詞的所有文章號”。文章1,2經(jīng)過倒排后變成
關(guān)鍵詞文章號 Beijing
i l.2 livel,2 shanghai 2 Rui 1 1

通常僅知道關(guān)鍵詞在哪些文章中出現(xiàn)還不夠,我們還需要知道關(guān)鍵詞在文章 中出現(xiàn)次數(shù)和出現(xiàn)的位置,通常有兩種位置: a)字符位置,即記錄該詞是文章中第幾個字符。 b)關(guān)鍵詞位置,即記錄該詞是文章中第幾個關(guān)鍵詞(優(yōu)點是節(jié)約索引空間、 詞組查詢快),lucene中記錄的就是這種位置。 加上“出現(xiàn)頻率”和“出現(xiàn)位置”信息后,我們的索引結(jié)構(gòu)變?yōu)椋?關(guān)鍵詞文章號【出現(xiàn)頻率】出現(xiàn)位置
Beijing 1 12】3,6

i1【l】,2[1】4,1
live

112],211】2,5,2 211】3

shanghai Rui

1[1】1

以live這行為例我們說明一下該結(jié)構(gòu):live在文章1中出現(xiàn)了2次,那么“2,5” 就表示live在文章1中出現(xiàn)的兩個位置,文章2中出現(xiàn)了一次,剩下的‘‘2”就表 示live是文章2中第2個關(guān)鍵字。 以上就是lueene索引結(jié)構(gòu)中最核心的部分。我們注意到關(guān)鍵字是按字符順 序排列的,因此lucene可以用二元搜索算法快速定位關(guān)鍵詞。 實現(xiàn)時lucene將上面三列分別作為詞典文件、頻率文件、位置文件保存。 其中詞典文件不僅保存有每個關(guān)鍵詞,還保留了指向頻率文件和位置文件的指 針,通過指針可以找到該關(guān)鍵字的頻率信息和位置信息。 Lucene中使用了field的概念,用于表達信息所在位冕(如標題中,文章中, ud中),在建索引中,該field信息也記錄在詞典文件中,每個關(guān)鍵詞都有一個 field信息(因為每個關(guān)鍵字一定屬于一個或多個field)。 為了減小索引文件的大小,Lueene對索引還使用了壓縮技術(shù)。首先,對詞 典文件中的關(guān)鍵詞進行了壓縮,關(guān)鍵詞壓縮為<前綴長度,后綴>,例如:當(dāng)前

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

詞為“阿拉伯語”,上一個詞為“阿拉伯”,那么“阿拉伯語”壓縮為島,語>。其次, 大量用到的是對數(shù)字的壓縮,數(shù)字只保存與上一個值的差值(這樣可以減小數(shù)字 的長度,進而減少保存該數(shù)字需要的字節(jié)數(shù))。例如當(dāng)前文章號是16389(不壓 縮要用3個字節(jié)保存),上一文章號是16382,壓縮后保存7(只用一個字節(jié))。 下面我們可以通過對該索引的查詢來解釋一下為什么要建立索引。 假設(shè)要查詢單詞“live'’,lncene先對詞典二元查找、找到該詞,通過指向頻 率文件的指針讀出所有文章號,然后返回結(jié)果。詞典通常非常小,因而,整個過 程的時間是毫秒級的。 如果用普通的順序匹配算法,不建索引,而是對所有文章的內(nèi)容進行字符串 匹配,這個過程將會相當(dāng)緩慢,當(dāng)文章數(shù)目很大時,時間往往是無法忍受的。 下面是倒排索引構(gòu)造基本算法描述: 1.產(chǎn)初始化+,
Create an empty dictionary
structure S.

2.產(chǎn)搜集文檔中的所有項?/
For each document

D1 In the collection,1≤i≤N,
it into index terms

1)Read口,parsing

2)For eachindextermt∈Dj,
i.Let

E.1

be the丘equency in



oft.

ii.Search S fort. iii.IftisnotinS.insertt
iv.Append 3.


node

storing<i,只.f>to

the list corresponding to term t.

嚴倒排文件得輸出?/
word)

For each term 1≤t≤n fn is the number ofdistinct

(1)Start



new inverted file entry. list corresponding to t,append<i,E,l>to this

(2)For each<i,E.f>in the
inverted file entry.

(3)Ifrequired,compress the inverted (4)Append this inverted

file entry.

file entry to the inverted file.

3.2

Lucene的設(shè)計原理和特色
Lucene的API接口設(shè)計的比較通用,輸入輸出結(jié)構(gòu)都很像數(shù)據(jù)庫的表=>記

錄_>字段,所以很多傳統(tǒng)的應(yīng)用的文件、數(shù)據(jù)庫等都可以比較方便的映射到

成都理工大學(xué)碩士學(xué)位論文

Lucene的存儲結(jié)構(gòu)/接口中?傮w上看:可以先把Lucene當(dāng)成一個支持全文索弓 的數(shù)據(jù)庫系統(tǒng)。比較一下Lucene和數(shù)據(jù)庫:

表3-5 Lucene數(shù)據(jù)庫和普通關(guān)系數(shù)據(jù)庫結(jié)構(gòu)的對比
Tab I e3-5 Contrast Lucene between I
ucene

DB and

common

DB

數(shù)據(jù)庫 數(shù)據(jù)源:record(fieldl,field2…)record(fieldI..) 、SQL:insert/ IDB
Index

數(shù)據(jù)源:doe(fieldl,field2…)doc(fieldl,field2…]
、indexer/

Lucene

Indexl

/searcher、

/SQL:select、 結(jié)果:results(record(fieldl,field2。) record(fieldl…)) Record:記錄,包含多個字段 Field:字段

結(jié)果:Hits(doc(fleldl,field2)doc(fieldl…)) Document:一個需要進行索引的“單元” 一個Document由多個字段組成 Field:字段

Hits:查詢結(jié)果集,由匹配的Document組成 RecordSet:查詢結(jié)果集,由多個Record組成

全文檢索≠like”%keyword%”

通常比較厚的書籍后面常常附關(guān)鍵詞索引表,它能夠幫助讀者比較快地找到 相關(guān)內(nèi)容的頁碼。索引之所以效率高,另外一個原因是它是排好序的。對于檢索 系統(tǒng)來說核心是一個排序問題。 由于數(shù)據(jù)庫索引不是為全文索引設(shè)計的,因此,使用like”%keyword%”時, 數(shù)據(jù)庫索引是不起作用的,在使用like查詢時,搜索過程又變成類似于一頁頁翻 書的遍歷過程了,所以對于含有模糊查詢的數(shù)據(jù)庫服務(wù)來說,LIKE對性能的危 害是極大的。如果是需要對多個關(guān)鍵詞進行模糊匹配:like”%keywordl%”and
”%keyword2%”…其效率也就可想而知了。
like

所以建立一個高效檢索系統(tǒng)的關(guān)鍵是建立一個類似于科技索引一樣的 反向索引機制,將數(shù)據(jù)源排序按順序存儲的同時,有另外一個排好序的關(guān)鍵 詞列表,用于存儲關(guān)鍵詞=>文章映射關(guān)系,利用這樣的映射關(guān)系索引:【關(guān) 鍵詞=>出現(xiàn)關(guān)鍵詞的文章編號,出現(xiàn)次數(shù)(甚至包括位置:起始偏移量,結(jié) 束偏移量),出現(xiàn)頻率1,檢索過程就是把模糊查詢變成多個可以利用索引的 精確查詢的邏輯組合的過程。從而大大提高了多關(guān)鍵詞查詢的效率,所以, 全文檢索問題歸結(jié)到最后是一個排序問題。 由此可以看出模糊查詢相對數(shù)據(jù)庫的精確查詢是一個非常不確定的問 題,這也是大部分數(shù)據(jù)庫對全文檢索支持有限的原因。Lucene最核心的特征

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

是通過特殊的索引結(jié)構(gòu)實現(xiàn)了傳統(tǒng)數(shù)據(jù)庫不擅長的全文索引機制,并提供了 擴展接口,以方便針對不同應(yīng)用的定制。 可以通過表格對比數(shù)據(jù)庫的模糊查詢:
表3-6 Lucene全文索引和普通數(shù)據(jù)庫索引對比
TabIe3-6 Contrast between Iucefle fuI I jndex and common index

Lucene全文索引引擎 索引 將數(shù)據(jù)源中的數(shù)據(jù)都通過全文索 引一一建立反向索引

數(shù)據(jù)庫 對于LIKE查詢來說,數(shù)據(jù)傳統(tǒng)的索引是根 本用不上的。數(shù)據(jù)需要逐個便利記錄進行 GREP式的模糊匹配,比有索引的搜索速度 要有多個數(shù)量級的下降。

匹配 效果

通過詞元(term)進行匹配。通過

使用:like’%net%’會把netherlands也 匹配出來。

語言分析接口的實現(xiàn),可以實現(xiàn)
對中文等非英語的支持。

多關(guān)鍵詞的模糊匹配,不能匹配詞序顛倒的
沒有匹配程度的控制:比如有記錄中net 出現(xiàn)5詞和出現(xiàn)1次的,結(jié)果是一樣的。

匹配 度 結(jié)果 輸出

有匹配度算法,將匹配程度(相
似度)比較高的結(jié)果排在前面。

通過特別的算法,將最匹配度最 高的頭100條結(jié)果輸出,結(jié)果集
是緩沖式的小批量讀取的。 通過不同的語言分析接口實現(xiàn), 可以方便的定制出符合應(yīng)用需要 的索引規(guī)則(包括對中文的支持)

返同所有的結(jié)果集,在匹配條目非常多的時
候需要大量的內(nèi)存存放這些臨時結(jié)果集

可定 制性

沒有接口或接口復(fù)雜。無法定制

結(jié)論

高負載的模糊查詢應(yīng)用,需要負

責(zé)的模糊查詢的規(guī)則,索引的資
料量比較大

使用率低,模糊匹配規(guī)則簡單或者需要模糊 查詢的資料量少

全文檢索和數(shù)據(jù)庫應(yīng)用最大的不同在于:讓最相關(guān)的頭100條結(jié)果滿足98% 以上用戶的需求 Lucene的創(chuàng)新之處: 大部分的搜索(數(shù)據(jù)庫)引擎都是用B樹結(jié)構(gòu)來維護索引,索引的更新會 導(dǎo)致大量的IO操作,Lucene在實現(xiàn)中,對此稍微有所改進:不是維護一個索 引文件,而是在擴展索引的時候不斷創(chuàng)建新的索引文件,然后定期的把這些 新的小索引文件合并到原先的大索引中,這樣在不影響檢索的效率的前提下, 提高了索引的效率12]。
表3—7
Table3-7

Lucene和其他全文檢索系統(tǒng)創(chuàng)新對比:
Contrast
between Iucene and other search
system

Lucene

I其他開源全文檢索系統(tǒng)

量索引和批量阿以進行增量的索引(Append),可以對于大量數(shù)據(jù)I很多系統(tǒng)只支持批量索
索引

隧行批量索引,并且接口設(shè)計用于優(yōu)化批量索引和f引,數(shù)據(jù)源增加需要重

成都理一r大學(xué)碩十學(xué)位論文 小批量的增量索引。 建索引。

Lucene沒有定義具體的數(shù)據(jù)源,而是一個文檔的結(jié) 很多系統(tǒng)只針對網(wǎng)頁, 數(shù)據(jù)源 構(gòu),因此可以非常靈活的適應(yīng)各種應(yīng)用(只要前端 缺乏其他格式文檔的靈 有合適的轉(zhuǎn)換器把數(shù)據(jù)源轉(zhuǎn)換成相應(yīng)結(jié)構(gòu)) Lueene的文檔是由多個字段組成的,甚至可以控制 那些字段需要進行索引,那些字段不需要索引,索 活性。

索引內(nèi)容抓取 引的字段也分為需要分詞和不需要分詞的類型:
需要進行分詞的索引,比如:標題,文章內(nèi)容 不需要進行分詞的索引,比如:作者/日期

缺乏通用性,往往將文 檔整個索引了

通過語言分析器的不同擴展實現(xiàn):可以過濾掉不需
要的詞:an 語言分析
the

of等

西文語法分析:將jumps juraped jumper都歸結(jié)成 jump進行索71/檢索 非英文支持:對亞洲語言,阿拉伯語言的索引支持

缺乏通用接口實現(xiàn)

查詢分析

通過查詢分析接口實現(xiàn),可以定制查詢語法規(guī)則:

Lucene的另外一個特點是在收集結(jié)果的過程中將匹配度低的結(jié)果自動過濾 掉了。這也是和數(shù)據(jù)庫應(yīng)用需要將搜索的結(jié)果全部返回不同之處。

3.3增強用戶體驗的Ajax技術(shù)
Ajax是Asynchronous
JavaScript and

XML的簡寫。Ajax并不是一門新的語

言或技術(shù),它實際上是幾項技術(shù)按一定的方式組合在一起,并在共同的協(xié)作中發(fā) 揮各自的作用,它包括: 使用XHTML和CSS標準化呈現(xiàn): 使用DOM實現(xiàn)動態(tài)顯示和交互: 使用)【1ⅥL和xSLT進行數(shù)據(jù)交換與處理; 使用XMLHttpRequest進行異步數(shù)據(jù)讀; 最后用JavaScript綁定和處理所有數(shù)據(jù); Ajax是基于服務(wù)器技術(shù)的不確定性,獨立于服務(wù)器語言的一門技術(shù)。所有
的開發(fā)人員都能使用并且一起討論相同的表現(xiàn)層。

Ajax的核心在于對Intemet默認的請求/響應(yīng)模式進行了修改,修改后框架基 本的流程是:對象初始化專發(fā)送請求專服務(wù)器接收÷服務(wù)器返回專客戶端 接收專修改客戶端頁面內(nèi)容。只不過這個過程是異步的,中間加入了一個Ajax 中『自J層。Web應(yīng)用開發(fā)人員現(xiàn)在可以自由的與服務(wù)器異步交互,這使得許多以 前原本只能在胖客戶端上完成的任務(wù)很完美的表現(xiàn)在客戶端了。比如在客戶端能 夠快速的驗證表單輸入的正確性。正是Ajax的提出消除了胖客戶(或桌面)應(yīng)
用與瘦客戶(或Web)應(yīng)用之間的界限。

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

由于AjaX的使用使得系統(tǒng)響應(yīng)和頁面加載更加流暢,使得web的工作性能 接近桌面客戶端軟件。Ajax使、№b中的界面與應(yīng)用分離(也可以說是數(shù)據(jù)與呈 現(xiàn)分離),有利于分工合作、減少非技術(shù)人員對頁面的修改造成的Web應(yīng)用程 序錯誤、提高效率、也更加適用于現(xiàn)在的發(fā)布系統(tǒng)。也可以把以前的一些服務(wù)器 負擔(dān)的工作轉(zhuǎn)嫁到客戶端,充分利用客戶端閑置的處理能力來處理。 Ajax數(shù)據(jù)跨過線路而不是整個頁面?zhèn)鬏。這種數(shù)據(jù)交換是經(jīng)由特定的瀏覽 器對象XMLHttpRcquest(XHR)實現(xiàn)的;再由適當(dāng)?shù)倪壿媮硖幚砻總數(shù)據(jù)請求的結(jié) 果,頁面的某個特定區(qū)域而不是完整的頁面被更新。從而達到更快的速度,更少 的擁擠和更好的信息傳送控制。 使用XHR對象與服務(wù)器進行異步通信,這樣就能創(chuàng)建更加動態(tài)的Web應(yīng)用。 例如,假設(shè)有一個下拉列表,這個列表是根據(jù)另外一個域或下拉列表的輸入來填 寫的。正常情況下,必須在加載第一個頁面時把所有數(shù)據(jù)都發(fā)送給客戶,然后使 用JavaScript根據(jù)輸入來填寫下拉列表。這么做會讓頁面變得很臃腫,使下拉列 表不再“動態(tài)”,頁面很可能膨脹得過大,達不到預(yù)期的效果。利用Ajax的話, 當(dāng)作為觸發(fā)源的域有變化,或者失去了輸入焦點,就可以向服務(wù)器做一個簡單的 請求,只要求得到更新下拉列表所需的部分信息。 在web應(yīng)用中我們的最終目的是接收服務(wù)器的返回信息,修改當(dāng)前文檔的 內(nèi)容。在客戶端采用Aj8.X技術(shù)來更新文檔,以及處理服務(wù)器返回的XML文檔。 能夠更加快捷方便的完成我們的文檔更新。 文檔對象模型(DOM)是表示文檔(比如HTML和Ⅺv兒)和訪問、操作 構(gòu)成文檔的各種元素的應(yīng)用程序接121(API)。一般的,支持Javaseript的所有 瀏覽器都支持DOM。它是W3C定義的標準的文檔對象模型,以樹形結(jié)構(gòu)表示 HTML和XML文檔,定義了遍歷這個樹和檢查、修改樹的節(jié)點的方法和屬性。 Web站點正在證明Aja)【的有效性、穩(wěn)定性,并且使Web看起來更像是一個 桌面應(yīng)用程序:即真正意義的web開發(fā)。Ajax特殊之處在于它可以使用驗證過 的現(xiàn)有技術(shù)完成這~切。換句話說就是,任何標準瀏覽器r可以處理JavaScfipt 和DOM的瀏覽器)都可以正常工作。您不需要單獨安裝其他插件。 Ajax能夠贏得廣泛認可的原因是基于它要縮短Web應(yīng)用程序和桌面應(yīng)用程 序之間的差距。相對于微軟整體推出胖客戶的理念把很多網(wǎng)絡(luò)上的應(yīng)用搬到本地 運行時,基于本地化的用戶體驗成為了一個很重要的方向,我們的目標就是要讓 用戶更好的使用我們的產(chǎn)品。用戶的支持就是我們的技術(shù)更新的動力。因此用戶 體驗是一個很重要的課題。沒有用戶就沒有我們產(chǎn)品的推廣,就不可能使我們計 算機廣泛的推廣應(yīng)用。

成都理。酱髮W(xué)碩士學(xué)位論文

3.4中文分詞技術(shù)
英文是以詞為單位,詞和詞之間是靠空格隔開,而中文是以字為單位,句子 中所有的字連起來才能描述一個意思。例如,英文句子I
am


student,用中文則

為:“我是一個學(xué)生”。計算機可以很簡單通過空格知道student是一個單詞,但 是不能很容易明白“學(xué)”、“生”兩個字合起來才表示一個詞。把中文的漢字序列切 分成有意義的詞,就是中文分詞,有些人也稱為切詞。我是一個學(xué)生,分詞的結(jié) 果是:我是一個學(xué)生。 對于搜索引擎來說,最重要的并不是找到所有結(jié)果,因為在上百億的網(wǎng)頁中 找到所有結(jié)果沒有太多的意義,沒有人能看得完,最重要的是把最相關(guān)的結(jié)果排 在最前面,這也稱為相關(guān)度排序。中文分詞的準確度常常直接影響到對搜索結(jié)果 的相關(guān)度排序。中文分詞技術(shù)屬于自然語言處理技術(shù)范疇,對于一句話,人可以 通過自己的知識來明白哪些是詞,哪些不是詞,但如何讓計算機也能理解,其處
理過程就是分詞算法。

現(xiàn)有的分詞算法可分為三大類:基于字符串匹配的分詞方法、基于理解的分
詞方法和基于統(tǒng)計的分詞方法。

1、基于字符串匹配的分詞方法 這種方法又叫做機械分詞方法,它是按照一定的策略將待分析的漢字串與一 個“充分大的”機器詞典中的詞條進行匹配,若在詞典中找到某個字符串,則匹配 成功(識別出一個詞)。按照掃描方向的不同,串匹配分詞方法可以分為正向匹 配和逆向匹配;按照不同長度優(yōu)先匹配的情況,可以分為最大(最長)匹配和最 。ㄗ疃蹋┢ヅ;按照是否與詞性標注過程相結(jié)合,又可以分為單純分詞方法和 分詞與標注相結(jié)合的一體化方法。常用的幾種機械分詞方法如下: 1)正向最大匹配法(由左到右的方向); 2)逆向最大匹配法(由右到左的方向); 3)最少切分(使每一句中切出的詞數(shù)最。。 還可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆 向最大匹配方法結(jié)合起來構(gòu)成雙向匹配法。由于漢語單字成詞的特點,正向最小 匹配和逆向最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高于正向 匹配,遇到的歧義現(xiàn)象也較少。統(tǒng)計結(jié)果表明,單純使用正向最大匹配的錯誤率 為1/169,單純使用逆向最大匹配的錯誤率為l/245。但這種精度還遠遠不能滿足 實際的需要。實際使用的分詞系統(tǒng),都是把機械分詞作為一種初分手段,還需通 過利用各種其它的語言信息來進一步提高切分的準確率。

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

一種方法是改進掃描方式,稱為特征掃描或標志切分,優(yōu)先在待分析字符 串中識別和切分出一些帶有明顯特征的詞,以這些詞作為斷點,可將原字符串分 為較小的串再來進行機械分詞,從而減少匹配的錯誤率。另一種方法是將分詞和 詞類標注結(jié)合起來,利用豐富的詞類信息對分詞決策提供幫助,并且在標注過程 中又反過來對分詞結(jié)果進行檢驗、調(diào)整,從而極大地提高切分的準確率。 對于機械分詞方法,可以建立一個一般的模型,在這方面有專業(yè)的學(xué)術(shù)論 文,這里不做詳細論述。 2、基于理解的分詞方法 這種分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。 其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來 處理歧義現(xiàn)象。它通常包括三個部分:分詞子系統(tǒng)、句法語義子系統(tǒng)、總控部分。 在總控部分的協(xié)調(diào)下,分詞子系統(tǒng)可以獲得有關(guān)詞、句子等的句法和語義信息來 對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用 大量的語言知識和信息。由于漢語語言知識的籠統(tǒng)、復(fù)雜性,難以將各種語言信 息組織成機器可直接讀取的形式,因此目前基于理解的分詞系統(tǒng)還處在試驗階
段。 3、基于統(tǒng)計的分詞方法

從形式上看,詞是穩(wěn)定的字的組合,因此在上下文中,相鄰的字同時出現(xiàn)的 次數(shù)越多,就越有可能構(gòu)成一個詞。因此字與字相鄰共現(xiàn)的頻率或概率能夠較好 的反映成詞的可信度?梢詫φZ料中相鄰共現(xiàn)的各個字的組合的頻度進行統(tǒng)計, 計算它們的互現(xiàn)信息。定義兩個字的互現(xiàn)信息,計算兩個漢字x、Y的相鄰共現(xiàn) 概率;ガF(xiàn)信息體現(xiàn)了漢字之間結(jié)合關(guān)系的緊密程度。當(dāng)緊密程度高于某一個閾 值時,便可認為此字組可能構(gòu)成了一個詞。這種方法只需對語料中的字組頻度進 行統(tǒng)計,不需要切分詞典,因而又叫做無詞典分詞法或統(tǒng)計取詞方法。但這種方 法也有一定的局限性,會經(jīng)常抽出一些共現(xiàn)頻度高、但并不是詞的常用字組,例 如“這一”、“之一”、“有的”、“我的”、“許多的”等,并且對常用詞的識別精度差, 時空開銷大。實際應(yīng)用的統(tǒng)計分詞系統(tǒng)都要使用一部基本的分詞詞典(常用詞詞 典)進行串匹配分詞,同時使用統(tǒng)計方法識別一些新的詞,即將串頻統(tǒng)計和串匹 配結(jié)合起來,既發(fā)揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞 結(jié)合上下文識別生詞、自動消除歧義的優(yōu)點。 到底哪種分詞算法的準確度更高,目前并無定論。對于任何一個成熟的分 詞系統(tǒng)來說,不可能單獨依靠某~種算法來實現(xiàn),都需要綜合不同的算法。 中文是一種十分復(fù)雜的語言,讓計算機理解中文語言更是困難。在中文分 詞過程中,有兩大難題一直沒有完全突破。

成都理工大學(xué)碩十學(xué)位論文

1、歧義識別

歧義是指同樣的一句話,可能有兩種或者更多的切分方法。例如:表面的,因為 “表面”和“面的”都是詞,那么這個短語就可以分成“表面的”和“表面的”。這種 稱為交叉歧義。由于沒有人的知識去理解,計算機很難知道到底哪個方案正確。 交叉歧義相對組合歧義來說是還算比較容易處理,組合歧義就必需根據(jù)整 個句子來判斷了。例如,在句子“這個門把手壞了”中,“把手”是個詞,但在句子 “請把手拿開”中,“把手”就不是一個詞;在句子“將軍任命了一名中將”中,“中將” 是個詞,但在句子“產(chǎn)量三年中將增長兩倍”中,“中將”就不再是詞。 如果交叉歧義和組合歧義計算機都能解決的話,在歧義中還有一個難題, 是真歧義。真歧義意思是給出一句話,由人去判斷也不知道哪個應(yīng)該是詞,哪個 應(yīng)該不是詞。例如:“乒乓球拍賣完了”,可以切分成“乒乓球拍賣完了”、也 可切分成“乒乓球拍賣完了”,如果沒有上下文其他的句子,恐怕誰也不知道 “拍賣”在這里算不算一個詞。
2、新詞識別

新詞,專業(yè)術(shù)語稱為未登錄詞。也就是那些在字典中都沒有收錄過,但又 確實能稱為詞的那些詞。最典型的是人名,人可以很容易理解句子“王軍虎去廣 州了”中,“王軍虎”是個詞,因為是一個人的名字,但要是讓計算機去識別就困 難了。如果把“王軍虎”做為一個詞收錄到字典中去,全世界有那么多名字,而且 每時每刻都有新增的人名,收錄這些人名本身就是一項巨大的工程。即使這項工 作可以完成,還是會存在問題, 新詞中除了人名以外,還有機構(gòu)名、地名、產(chǎn)品名、商標名、簡稱、省略 語等都是很難處理的問題,而且這些又正好是人們經(jīng)常使用的詞,因此對于搜索 引擎來說,分詞系統(tǒng)中的新詞識別十分重要。目前新詞識別準確率已經(jīng)成為評價 一個分詞系統(tǒng)好壞的重要標志之一。
中文分詞的應(yīng)用

目前在自然語言處理技術(shù)中,中文處理技術(shù)比西文處理技術(shù)要落后很大一 段距離,許多西文的處理方法中文不能直接采用,就是因為中文必需有分詞這道 工序。中文分詞是其他中文信息處理的基礎(chǔ),搜索引擎只是中文分詞的一個應(yīng)用。 其他的比如機器翻譯(MT)、語音合成、自動分類、自動摘要、自動校對等等, 都需要用到分詞。因為中文需要分詞,可能會影響一些研究,但同時也為一些企 業(yè)帶來機會,因為國外的計算機處理技術(shù)要想進入中國市場,首先也是要解決中 文分詞問題。在中文研究方面,相比外國人來說,中國人有十分明顯的優(yōu)勢。 分詞準確性對搜索引擎來說十分重要,但如果分詞速度太慢,即使準確性 再高,對于搜索引擎來說也是不可用的,因為搜索引擎需要處理數(shù)以億計的網(wǎng)頁,

第3章Lucene的實現(xiàn)原理及相關(guān)技術(shù)

如果分詞耗用的時間過長,會嚴重影響搜索引擎內(nèi)容更新的速度。因此對于搜索 引擎來說,分詞的準確性和速度,二者都需要達到很高的要求。 中文分詞幾種常用的方式:
A.單字分詞

單字分詞,顧名思義,就是按照中文一個字一個字地進行分詞。以這樣方式 切分出來的詞再進入索引,稱為字索引,但是這種方式隨著索引的增大,相應(yīng)索 引條目的內(nèi)容會不斷增大,嚴重影響效率。如:我們是中國人,效果:我\們\是\
中\國\人。 B.二分法

二分法,就是無論什么詞都按兩個字進行切分,不考慮詞義。如:我們是中 國人,效果:我們\{『]是\是中\中國\國人。 C.詞庫分詞 詞庫分詞是用一個已經(jīng)建立好的詞的集合(按照某種算法)去匹配目標,當(dāng) 遇上集合中已經(jīng)存在的詞時,就將它切分出來。通常詞庫分詞被認為是最理想的 中文分詞算法。如:我們是中國人,通成效果為:我們\是\中國、中國人。 對于詞庫分詞方式,詞庫的建立是關(guān)鍵,它需要統(tǒng)計大量的內(nèi)容,然后根據(jù) 各種詞出現(xiàn)的頻率、概率再來進行篩選,最終決定什么詞應(yīng)當(dāng)放進詞庫。還有一 些高級的詞庫加入了語義和詞性的標注,甚至還有不同詞的權(quán)重,使用這樣的詞 庫進行分詞的效果應(yīng)該很是理想的。 基于自動切分的最大優(yōu)點是沒有詞表維護成本,實現(xiàn)簡單,缺點是索引 效率低,但對于中小型應(yīng)用來說,基于二元語法的切分還是夠用的;诙 元切分后的索引一般大小和源文件差不多,而對于英文,索引文件一般只有 原文件的30%40%不同。
表3-8自動切分和詞表切分比較
Table3-8 Contrast between auto partiCiDIe and l ist partjCjP Je

自動切分 實現(xiàn) 查詢 存儲效率 維護成本

詞表切分 實現(xiàn)復(fù)雜 適于實現(xiàn)比較復(fù)雜的查詢語法規(guī)則

實現(xiàn)非常簡單
增加了查詢分析的復(fù)雜度

索引冗余大,幾乎和原文一樣大 索引效率高,為原文大小的30%左右 無詞表維護成本 嵌入式系統(tǒng):運行環(huán)境資源有限 詞表維護成本非常高:中日韓等語言需要 分別維護。還需要包括詞頻統(tǒng)計等內(nèi)容

適用領(lǐng)域

分布式系統(tǒng):無詞表同步問題 多語言環(huán)境:無詞表維護成本

對查詢和存儲效率要求高的專業(yè)搜索引擎

目前比較大的搜索引擎的語言分析算法一般是以上兩種方法的結(jié)合。

成都理I:大學(xué)碩士學(xué)位論文

第4章主題搜索引擎的實現(xiàn)
4.1

Nutch的結(jié)構(gòu)設(shè)計和特點
Lucene是一個提供全文文本搜索的函數(shù)庫,它不是一個應(yīng)用軟件。它提供

的很多API函數(shù)可以運用到各種實際應(yīng)用程序中。 Nutch是一個建立在Lucene核心之上的Web搜索的實現(xiàn),它在Lueene的基 礎(chǔ)上添加了網(wǎng)絡(luò)爬蟲和一些和web相關(guān)的應(yīng)用包。其目的就是想從一個簡單的 站內(nèi)索引和搜索推廣到全球網(wǎng)絡(luò)的搜索上,就像Google和Yahoo一樣。具有很 好的擴展功能,為用戶進行二次開發(fā)提供了良好的框架。 Nutch是基于Lueene的。Lueene為Nuteh提供了文本索引和搜索的API。 總體上Nutch可以分為2個部分:抓取部分和搜索部分。抓取程序抓取頁面并把 抓取回來的數(shù)據(jù)做成反向索引,搜索程序則對反向索引搜索回答用戶的請求。抓 取程序和搜索程序的接口是索引。兩者都使用索引中的字段。 實際上搜索程序和抓取程序可以分別位于不同的機器上。 抓取程序是被Nuteh的抓取工具驅(qū)動的。這是一組工具,用來建立和維護幾
個不同的數(shù)據(jù)結(jié)構(gòu):web database,a 到的3個不同的數(shù)據(jù)結(jié)構(gòu)。
The web
set

ofsegments,index。下面逐個解釋上面提

database(WebDB)。是一個特殊存儲數(shù)據(jù)結(jié)構(gòu),用來映像被抓取

網(wǎng)站數(shù)據(jù)的結(jié)構(gòu)和屬性的集合。WebDB用來存儲從抓取開始(包括重新抓。 的所有網(wǎng)站結(jié)構(gòu)數(shù)據(jù)和屬性。WebDB只是被抓取程序使用,搜索程序并不使用 它。WebDB存儲2種實體:頁面和鏈接。頁面表示網(wǎng)絡(luò)上的一個網(wǎng)頁,這個 網(wǎng)頁的Ud作為標示被索引,同時建立一個對網(wǎng)頁內(nèi)容的MD5哈希簽名。跟網(wǎng) 頁相關(guān)的其它內(nèi)容也被存儲,包括:頁面中的鏈接數(shù)量(外鏈接),頁面抓取信 息(在頁面被重復(fù)抓取的情況下),還有表示頁面級別的分數(shù)score。鏈接表示 從一個網(wǎng)頁的鏈接到其它網(wǎng)頁的鏈接。因此WebDB可以說是一個網(wǎng)絡(luò)圖,節(jié)點 是頁面,鏈接是邊。 Segment是網(wǎng)頁的集合,并且它被索引。Segment的Fetchlist是抓取程序 使用的url列表,它是從WebDB中生成的。Fetcher的輸出數(shù)據(jù)是從fetchlist中 抓取的網(wǎng)頁。Feteher的輸出數(shù)據(jù)先被反向索引,然后索引后的結(jié)果被存儲在
segment中。Segment的生命周期是有限制的,當(dāng)下一輪抓取開始后它就沒有用

了。默認的重新抓取間隔是30天。因此刪除超過這個時間期限的segment是可 以的。而且也可以節(jié)省不少磁盤空間。Segment的命名是日期加時間,因此很直
32

第4章主題搜索引擎的實現(xiàn)

觀的可以看出他們的存活周期。 索引庫是反向索引所有系統(tǒng)中被抓取的頁面,他并不直接從頁面反向索引產(chǎn) 生,它是合并很多小的segment的索引中產(chǎn)生的。Nutch使用Lucene來建立索 引,因此所有Lucene相關(guān)的工具API都用來建立索引庫。需要說明的是Lucene

的segment的概念和Nutch的segment概念是完全不同的,不要混淆哦。簡單來 說Lucene的segment是Lucene索引庫的一部分,而Nutch的Segment是
WebDB中被抓取和索引的一部分。 Nutch是一個可以構(gòu)造大型分布式的搜索引擎。Nutch的核心部分目前已經(jīng) 被重新用分布式的處理模型Map Reduce實現(xiàn)了。并且Nutch也吸引了很多研究 者,他們非常樂于嘗試新的搜索算法,因為對Nutch來說,這是非常容易實現(xiàn) 擴展的。Nutch是非常靈活的,擴展性好,它可以很好的被客戶訂制并集成到應(yīng) 用程序中,使用Nutch的插件機制,Nutch可以作為一個搜索不同信息載體的 搜索平臺。當(dāng)然,最簡單的就是集成Nutch到自己的站點,為用戶提供搜索服務(wù)。 Nutch提供了一個高效、開源、易操作的搜索引擎,內(nèi)部有許多細微之處都是值 得借鑒的,例如采用了hadoop的分布式文件系統(tǒng),類似eclipse的插件技術(shù)。當(dāng) 然,為了讓搜索引擎能夠處理數(shù)以億計的網(wǎng)頁,以上的模塊都應(yīng)該是分布式的。 也就是說,可以在多臺機器上并行運行。Nutch的結(jié)構(gòu)圖設(shè)計(如圖4.1)

回國叵三習(xí) 因固叵司
團園回固
Hadoop 圖4—1
F i g.4-1

Nutch結(jié)構(gòu)圖
Nutch

Structure of

Nutch是一個開源Java實現(xiàn)的搜索引擎。它提供了我們運行自己的搜索弓

成都理_下大學(xué)碩+學(xué)位論文

擎所需的全部工具。Nutch是開放源代碼的,因此任何人都可以查看他的排序算 法是如何工作的。商業(yè)的搜索引擎排序算法都是保密的,我們無法知道搜索出來 的排序結(jié)果是如何算出來的。更進一步,一些搜索引擎允許競價排名,比如百度, 這樣的索引結(jié)果并不是和站點內(nèi)容相關(guān)的。因此Nutch對學(xué)術(shù)搜索和政府類站 點的搜索來說,是個好選擇。因為一個公平的排序結(jié)果是非常重要的。

4.2主題搜索引擎的主題詞庫
Nutch有出色的架構(gòu)實現(xiàn),對于開發(fā)插件非常容易。主題搜索爬行的對象不 一樣,它只針對某些固定的網(wǎng)站,在評分過程中,針對該主題建立一個詞庫,把 與詞庫中相關(guān)性大的查詢詞句加大權(quán)因子。在主題搜索中我們依舊要求更好的用 戶體驗,Ajax技術(shù)幫助我們實現(xiàn)這個目標.提供更好的搜索界面。 4.2.1構(gòu)造主題詞庫 主題詞是表達和描述文件、資料等主題內(nèi)容并用于標引和檢索的規(guī)范化語 詞。它和自然語言中的詞是有區(qū)別的,是專門為文件、資料等的標引和檢索而設(shè) 計的一種標準化詞匯。主題詞是從自然語言的主要詞匯中選出的標準化詞匯,并 且能反映文本的主題內(nèi)容,它必定包含一定的分類意義。所以,分類詞庫中的詞也
可以從主題詞庫中產(chǎn)生。

主題詞標引是指抽取信息中能夠表達其核心內(nèi)容的詞或詞組.并將這些詞或 詞組轉(zhuǎn)化為受控詞的過程。這里所指的主題詞是某一特定專業(yè)檢索和標引用的規(guī) 范詞。具體思路是利用漢語自動分詞的研究成果,采用詞典分詞法將文獻進行切 分,通過詞加權(quán)或詞頻統(tǒng)計法對切分后的詞進行排序確定關(guān)鍵詞,利用主題詞表將 關(guān)鍵詞轉(zhuǎn)化、合并、去重、重新排序后確定系統(tǒng)正式使用的主題詞.并追加文獻 代號送入系統(tǒng)主題詞字段中。在實現(xiàn)過程中,為了繼續(xù)發(fā)揚關(guān)鍵詞標引過程中能 夠及時反映新出現(xiàn)的專業(yè)術(shù)語,及時更新詞表,把原文獻給出的關(guān)鍵詞一并加入 到切分后的詞匯集中,進行合并、去重、加權(quán)、排序后確定為關(guān)鍵詞。 主題詞標引的目的是提高查全率和查準率,減輕用戶構(gòu)造索引的負擔(dān),縮短 檢索時間,便于擴檢和縮檢。 普通敘詞表屬于先控詞表,而把若干詞或詞的片斷構(gòu)造成一個檢索策略,則 屬于一種后控過程?山栌煤罂刂圃~表來改善關(guān)鍵詞檢索性能。 具體地,后控制技術(shù)是指檢索系統(tǒng)在標引階段使用自然語言,不對標引進行 嚴格控制,而在檢索階段才對檢索詞進行控制的一種自然語言檢索優(yōu)化技術(shù)。

第4章主題搜索引擎的實現(xiàn)

后控制詞表的性質(zhì)類似于入口詞表,它是~種轉(zhuǎn)換工具,~種擴檢工具,一 種羅列自然語言檢索標識供選擇的工具。后控制詞表是利用先控語言的原理和方 法編制的自然語言檢索用詞表,它主要是對自然語言中大量存在的等同關(guān)系、等 級關(guān)系和一部分相關(guān)關(guān)系進行控制和提示,具有自學(xué)習(xí)功能,可根據(jù)檢索的需要 將新概念和新術(shù)語及時地加入詞表中,是一個動態(tài)詞表。用戶通過瀏覽詞表選用 檢索詞,或者系統(tǒng)自動執(zhí)行查詢調(diào)整(主要是擴檢)既減輕了用戶負擔(dān),又提高了 系統(tǒng)的易用性和檢索效率。后控制詞表是“自然語言檢索和人工受控語言結(jié)合的 最佳范例”。 后控制詞表系統(tǒng)是信息檢索的核心,也是提高檢索效率的關(guān)鍵。 國外有關(guān) 詞表編制及詞表在網(wǎng)絡(luò)化應(yīng)用方面的研究與實踐已經(jīng)取得了長足的發(fā)展。一方 面,已經(jīng)開發(fā)出了多種詞表編制與維護軟件。在此基礎(chǔ)上,充分結(jié)合網(wǎng)絡(luò)技術(shù), 使詞表向著網(wǎng)絡(luò)化和提供網(wǎng)絡(luò)檢索應(yīng)用接口的方向發(fā)展。另~方面,把機讀或 網(wǎng)絡(luò)化詞表嵌入網(wǎng)絡(luò)檢索工具中或者作為檢索系統(tǒng)的一個可調(diào)用接口,為用戶檢 索策略的構(gòu)造提供提示和導(dǎo)航,這樣就提高了網(wǎng)絡(luò)檢索效率,真正體現(xiàn)了詞表在 網(wǎng)絡(luò)檢索中的應(yīng)用價值。國外開發(fā)了一系列實用性的網(wǎng)絡(luò)化詞表和后控檢索支持 下的網(wǎng)絡(luò)信息檢索系統(tǒng)【引。 4.2.2結(jié)合主題詞庫改進搜索結(jié)果 在nutch中提供了插件機制和各種可以修改的影響評分因子。通過自己建立 的主題詞表,使得相應(yīng)主題的關(guān)鍵詞能夠獲得更高的得分,返回結(jié)果更加接近用
戶的需求。

評分公式中一些因子,它們使基于同一查詢的某些文檔的評分高于其他的文 檔。如果確實想知道這些因子是如何計算出來的,Lucene提供了一個稱為 Explanation的類來滿足這個需要。IndexSearcher中有一個explain方法,調(diào)用該 方法需要提供一個Query對象和一個文檔ID作為參數(shù),且該方法會返回一個 Explanation對象。Explanation對象的內(nèi)部包含了所有關(guān)于評分計算中各個因子 的細節(jié)信息。如果需要的話,雖然可以對每個因子的細節(jié)進行訪問,但是通常全 部輸出這些解釋還是有必要的。toStringO方法可以將Explanation對象很好地以 文本格式輸出來。通過Explanation對象可以方便地看到評分計算的內(nèi)部工作原 理,但是它需要的開銷和做查詢操作是一樣的,因此,不要過多地使用Explanation
對象。

對于一般的搜索要求我們可以使用lucene默認的評分類DefaultSimilarity, 但是在主題應(yīng)用中,需要定制相應(yīng)的Similarity來服務(wù)主題的應(yīng)用需求。修改 Similarity需要同時對索引和搜索都進行修改,必須在搜索或者排序之間修改

成都理丁大學(xué)碩士學(xué)位論文

Similarity。

要定制特定主題的Similarity,只要在建立索引之前調(diào)用

lndexWriter.setSimilarity,或者在搜索之前調(diào)用Searcher.setSimilarity。 在Lucene中,修改評分系統(tǒng)將比修改similarity能更大程度的影響結(jié)果。 Lucene的評分系統(tǒng)是一個非常復(fù)雜的機制,主要由下面三個類來實現(xiàn):
Weight,Scorer. Query,

從某種意義上來說,Query是評分開始的地方。沒有查詢就沒有什么可以評 分的。更重要的是它是其他的評分系統(tǒng)的催化劑,由它來生成其他的評分系統(tǒng), 然后將他們整合起來。Query有一些重要的方法需要被繼承::
createWeight(Searcher searcher)每個查詢都要提供一個實現(xiàn)好的權(quán)重對象。

Weight權(quán)重接口主要用來定義Query的一個代表實現(xiàn)接口,所以可以被重 用。任何可以用來被搜索的類都應(yīng)該內(nèi)置一個Weight,而不是在Query類。這 個接口定義了6個要被執(zhí)行的方法。 Scorer是評分的抽象類,提供一些基本的計分功能供所有的評分類實現(xiàn),是 Lucene評分機制的核心類。Scorer定義了一下的方法,必須被實現(xiàn)。 Documentboost一文檔的boost,是建索引的時候設(shè)是的文檔得分對相關(guān) 主題詞的文檔給較高的分數(shù)。 在索引過程中根據(jù)考慮所收錄的文檔重要性來預(yù)先設(shè)置一個文檔的級別 (Rank),對某個域進行加權(quán)處理,可通過doc.setBoost(float)來設(shè)置文檔級別。 當(dāng)然相應(yīng)的如果認為某一主題Field級別高于另外的field,那么也可以通過 field.setBoost(float)來實現(xiàn)目標。

4.3快速構(gòu)建相關(guān)主題搜索引擎
4.3.1

Nutch使用的準備工作 (1)首先安裝idI【和tomcat并且配置環(huán)境變量

設(shè)置JDK的安裝路徑JAVA_HOME=D:XProgram FilesUava\jdkl.5.o_08

設(shè)置TOMCAT的安裝路徑TOMCAT HOME=D:Wrogram
Group'Tomcat 4.1
Set Set

FileskApache

path---%JAVA_HOME%\bin:%JAVA HOME%\jre\bin

classpath=%JAVA_HOME%klib;%JAVA—HOME%\tools.jar

(2)由于運行Nuteh自帶的腳本命令需要Linux的環(huán)境,所以我們可以借 助Cygwin來模擬這種環(huán)境。需要把\eygwin\bin目錄加入path環(huán)境變量中。
在Windows系統(tǒng)的環(huán)境變量設(shè)置中,增加變量NUTCH-JAVA_HOME=%
JAVA

HOME%。安裝好eygwin后,雙擊桌面圖標進入類似DOS的窗口,進入

第4章主題搜索引擎的實現(xiàn)

安裝nutch的目錄
cd/cygdrive/d/nuteh一0.8.1

執(zhí)行命令bin/nuteh
安裝成功。

(3)把下載的nutch安裝文件nuteh-O.8.1.tar.gz解壓到本地,在Nutch的 安裝目錄(DAnuteh.0.8.1)中建立一個文件夾,名稱為urls,然后在uds中建立一

個名為謝.o(t的文本文件,文件中寫入要抓取網(wǎng)站的頂級網(wǎng)址,即要抓取的起
始頁。比如在此文件中寫入如下內(nèi)容:
http://www.godeyes.cn/

(4)編輯eonffcrawl.urlfilter.txt文件,修改MY.DOMAIN.NAME部分:
捍accept hosts in MY.DOMAIN.NAME

—。htcp://www.godeyes.en/

(5)編輯eonf/nutch-default.xral文件,修改http.agent.name部分為:
<property>

<name>http.agent.name</name> <value>NutchlCT</value> <description>HTTP。User-Agent'request header.MUST NOT be empty
please set this to a single word uniquely related to your organization. NOTE:You should also check other related properties: hap.robots.agents http.agent.description http.agent.url

http.agent.email http.agent.version
and set their values appropriately. </deseription> </property>

4.3.2主題網(wǎng)站索引庫內(nèi)容的建立 Nuteh的爬蟲抓取網(wǎng)頁有兩種方式,一種方式是lnlranet Crawling,針對的是 企業(yè)內(nèi)部網(wǎng)或少量網(wǎng)站,使用的是crawl命令;另一種方式是Whole.webcrawling, 針對的是整個互聯(lián)網(wǎng),使用iIlject、generate、fetch和updatedb等更底層的命令。 啟動cygWin\bin下的bash命令,在命令行窗I=I中輸入:
ed/cygdrive/d/nutch-0.8.1

需根據(jù)安裝路徑改變一下進入當(dāng)前放置nutch文件的目錄下面嘲。
然后再輸入:
birdnutch crawl urls—dir crawledGis—depth 3?threads 3>&crawl.109

成都理[大學(xué)碩士學(xué)位論文

圖4-2安裝調(diào)試信息
Fig 4-2 F;x debugs nformation

等待大約2分多鐘后,程序運行結(jié)束。會發(fā)現(xiàn)在nutch-0.8.1目錄下被創(chuàng)建了 一個名為erawledGis的文件央,同時還生成一個名為crawl.109的日志文件。利
用這一日志文件,我們可以分析可能遇到的任何錯誤。另外,在上述命令的參數(shù)
中:

dir指定抓取內(nèi)容所存放的目錄 depth表示以要抓取悶站頂級網(wǎng)址為起點的爬行深度
threads指定并發(fā)的線程數(shù)

在網(wǎng)頁抓取過程中生成的文件如下圖4.3所示 曰囝#?-l?罄i戮 嗣國crawl d.b 嗣口ir,daacos 田口linkdb


o咄

Cj‘?一?nb

國盛200704290053157 lil豳20070428005437
。欤
20070428005510

圍4-3生成文件組成信息
Fig,4-3 Create fi Ies i nfo

r舊tion

4.3。3數(shù)據(jù)管理器工具的編寫測試 由于lucene采用了自己的數(shù)據(jù)格式,抓取數(shù)據(jù)后的保存格式,無法被直接 瀏覽和管理,不像我們在操作普通關(guān)系型數(shù)據(jù)庫時可以通過數(shù)據(jù)庫提供商提供的 開發(fā)工具可視化的觀察分析數(shù)據(jù).因為那些大型的數(shù)據(jù)庫都有一個大型的研發(fā)團 隊,為使用者提供的服務(wù)極為方便,而我們在使用iava語言的項目研發(fā)中涌現(xiàn) 出很多優(yōu)秀的開源項目,這些開源的項目都是由我們開發(fā)者在不斷的完善中,沒 有什么配套的第三方工具可以很方便的使用.所以我們需要在自己的研究過程中

第4章主題搜索引擎的實現(xiàn)

編寫一些第三方輔助工具來為我們的研發(fā)提供方便和標準。 Swing是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口 工具包(AWT)為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing 開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng) 建優(yōu)雅的用戶界面。Swing組件集是JFC提供的一套新的GUI工具,它簡化了 基于圖形界面的窗口系統(tǒng)的開發(fā)。Swing組件是所謂的輕量型組件,開發(fā)人員可 以方便的選擇自己的需要的GUI風(fēng)格:本地的顯示風(fēng)格、統(tǒng)一的{ava顯示風(fēng)格 或用戶定制的風(fēng)格。Swing有更多的靈活性和更強大的功能。 由于lueene的數(shù)據(jù)格式我們是不可以直接觀察分析的,可以用iava自己編寫 一個可視化的數(shù)據(jù)管理工具,通過借助Swing的可視化組件來編寫,利用簡易的 可視化程序來把lueene數(shù)據(jù)格式轉(zhuǎn)化為可直接觀察的數(shù)據(jù),并且分析查詢相關(guān) 數(shù)據(jù)。為此編寫了DBManagerForNutch這個數(shù)據(jù)管理器工具,該工具提供了數(shù) 據(jù)格式的可視化以及查詢功能,對索引中的各個文件夾下的數(shù)據(jù)都可以導(dǎo)入進來 分析,其初始化界面如(圖4.4)所示:

圖4-4 DBManager For Nuteh初始界面
Fig.4-4 Initial interface ofthe

DBManager For Nuteh

結(jié)合上面抓取的索引信息,在這幾個數(shù)據(jù)目錄中erawldb。linkdb是WebLink 目錄,存放ud及urls的相互關(guān)系,作為爬行和重新爬行的依據(jù)。 Crawldb是所有需要抓取的超連接信息,讀取內(nèi)容如(圖4.5):

成都理‘T大學(xué)碩+學(xué)位論文

p口NulchCrawl

卜凸翁aw國
卜0
LmkDB

;rip f/bbs godeyes nH口/fbbs htlp



1 f 1 1 1 1

28;04;20

0 0 0 0 0 0

30 0 300 30 0 30 0 30 0 30 0 30 0
30 0

0 0021 79

01f01門970

godeyes c

2∞4/20
28;04/20 28;04;20 28;04;20 28;04120 28105;20 28/05f20

0 0021 79 0 0021 78 0 0021 78 3 22061 2 5 434782 0 004658


0I/0ILl870 01f01門970 01f01門970 01f01門970 01f01』1 970 01f01』1 970 01f01門970

}口Segments r凸co№rII L D CrawiFeich:

f/bbs godeyes c

godeyes c hn0 fidownload god
Nip//download god http;;download

lttp f/bbs

}_In

ParseData

god

2 2

o凸ParseTe“{

h協(xié);/download god

004668

圖4-5
Fig,4-5

信息
Information of CrawIDB

Linkdb中存放的是所有超連接及其每個連接的連入地址和錨文本。讀取出來 的信息如下(圖4.6):
}疊



o’”一
hrip Hbbs },rip HbbS hrip Hbb0

、試
godeyeE crl,An

”4

’、
Ooogle
rlce as a5 as a5 a5 as as aS as a5

。h'dink一””黲!斐
Earth中文勢據(jù)庫支丁支持NET
3 07

rlo LInce/Ar,nourlce a5

godeyeE Ln;AnlloUflcelannou

便用'3E中文數(shù)據(jù)厙提矛netframewo rk出錯

godeyes cn/Anr,o LIltceSAnnourice godeves cn/AnNounceJAnnounce

尋找戰(zhàn)友t一解秉封oE中文教據(jù)庫雨壬亨∞Ⅱ瓦t'

t,rip肋b5

l,tipⅣbbs goaeveS LrdArlhouriCefArlnounce iiripⅣbb5 godeve5【rdAnnoufile,Announce hrip I/lObs godeyes c rdAnnounceSAnnounce http/fObS hn0 l?ObS ittp flbbS 1nn fSbbS

一=0E中立剪據(jù)庫糾描營帖t 中奠勢據(jù)庫臺趟密么?
雌薦悟l圈霧地標中圈干省市縣慷洋細地…l
I丘期網(wǎng)左筍于中文數(shù)據(jù)庫的建議帖臺集‘唐負 __
山幕穿阿詳}日地標

900eyes godeyeS£rdAnnOunceIAnnounce


rdAnnOur,ce/Announce

Godeyes中芟筘冕庫羌i去啟瓤—蘊孽后百動jf一

godeye¥c

rdAnnounce/Announce

godeyes£r#Announce/Announce

我是鼬殺的新手什么私下僵我想下千中安數(shù)磊=== 部婦皇帝詛轄聽蒞地地標

一 ~~

圖4-6 LinkDB信息
Fig.4—6 Information of LinkDB

Segments是每輪抓取的時候根據(jù)crawldb生成的,存放抓回來的網(wǎng)頁。存放 的信息包括6種content、crawl
fetch、crawl generate、crawl parse、parse

parse_text。其中content是抓取下來的網(wǎng)頁內(nèi)容;crawl_generate最初生成; crawl—fetch、content在抓取時生成;crawl_parse、parse_data、parse_text在解析 抓取的數(shù)據(jù)文件時生成。其中crawl
generate、crawl

fetch和craw]Uarse是crawldb

的部分url數(shù)據(jù),它們格式一樣,不同的是抓取時間、狀態(tài)、簽名等有所變化。 nutch以廣度優(yōu)先的原則來爬行,因此每爬完一輪就會生成一個segment目錄.上面 設(shè)置的深度為3,所以生成3個以日期命名的文件夾。 抓取網(wǎng)頁時生成的crawl fetch包含的信息如下:
}口
一 '

}篙糕 瓣糕 猻npm岫~w
lhilpӬv^v

5 7 7 5 5

2目04;20 28104/20 28S04t20

0 0 0

30 0 30 0 30 0 30 0 30 0





0’,01,I 9i0 08



0 021 7391 3 0 021 7391 3 0 021 7391 3 0 021 7391 3 0 04347826 0 021 7391 3

01,01,1 970 08 0 0’,01,1 970 08 0 0'101,1 970 08 0 0,,01,1 970 08 0 0’,01,1 970 08 0 0’,01,1 970 0e 0

28104f20 28;04/20 28104t20 28;04,20







O 0

30 0
30 0

l}lnp mM~w

圖4-7 CrawlFetch信息
Fig.4-7 Information of

40

第4章主題搜索引擎的實現(xiàn)

解析抓取的數(shù)據(jù)文件分析過后生成網(wǎng)頁文本內(nèi)容如下:
t u— j
IS
。

耙虹



hnp”“w
r臨m¨w

godeyes Crdbollom



J撕Sr.rlplD0curnentdocumentwrite('。<tabI

godeyes cr#browser asp godeyes on/CONU¥hIm asp

口卜L0

hltp『^vⅥ^v

hitp"H蝴godeyes on/download http"ww godeyes cn/ge asp

h坤mw

鼬薛漫游區(qū)—一上帚Z驏首頁I Google Earth 上帝Z眼鞋茅我們 Google Ea rthf,^/odd V訕ndJ苴他Earth贛件下戴 Google Eanh歇悻專題 上帝:二霉googleea

godmfes cⅣlmg廳78 swf

CWS}0嵫;翟P嗟罨口”懂口糟冒Kpo¥

h扣,^¨v宵godeyes crd(ndeyasp h11pⅣ■w_godeyes crdmap asp

上帝之呼蟄1、角度看世界鐘鈉ygodeves

cn0

縋圖舞援曹夏I Google Eadh專題l NASAW0r

圍4-8
Fig.4-8 Information of

信息
ParseText

DBManager For

Nutch這個工具實現(xiàn)的就是把非直觀的數(shù)據(jù)可視化給使用

者,相當(dāng)于一個格式的轉(zhuǎn)化,當(dāng)前實現(xiàn)的功能比較簡單,在以后的開發(fā)過程中會 逐漸的根據(jù)需求更加的完善該第三方工具。 4.3.4使用Tomcat服務(wù)器進行搜索測試 (1)將tomcat\webapps下的ROOT文件夾名改成ROOTl; (2)將nutch-O.8.1目錄的nutch-O.8.1.Will'用winrar解壓到tomcat\webapps下,
并將其改名為ROOT;

(3)打開R001、wEB刪F\classes下的nutch-site.xml文件,修改成如下形式:
<?xml version=”1.0”?>
<?Ⅺ111.stylesheet type=”text/xsl”href=-”configuration.xsl”?> <『--Put site-specific property overrides in this file.一> <configuration> <property>

<name>searcher.dir</name>
<value>D:Inutch一0.8.1/erawledGis</value>

</prope。

</configuration>
其中的“<value>D:/nuteh.0.8.1/crawledGis</value>”部分應(yīng)根據(jù)自己的設(shè)置進 行相應(yīng)修改。該目錄是指明需要查詢的服務(wù)器索引文件的位置。如果不指明索引 目錄就會查詢不到結(jié)果,如(圖4.9)是Tomcat中打印的信息。
2887—84—28 81:06:17,164 IHFO INF0 NutchBean—quel-y t'equest flPom 127.9.0.1

2887—日4—28齟:86:17,174
2887一日哇一2疊日l:86:17,174 2807—84—28日1:86:17,194 2887-84-28日l:B6:17.t94

NutchBean—qttel"9;上常
NlutchBean—lano=zh NutchBean一¥earching HutchBean—total for 2B

INFO
INFO INFO

Mv

hits

hits:B

圖4—9查詢過程信息
Fig.4-9^I I the information in searoh

返回結(jié)果(total hits)始終為0。

(4)打開ROOT\WEB—INF\classes下的nutch.default.xml文件,修改
41

成都理丁大學(xué)碩+學(xué)位論文

http.agent.name成如下形式:

<prope啊>
<name>http.agent.name</name>
<value>NutchlCT</value>

<description>HTTP'User-Agent。request header.MUST NOT be empty
please set this to a single word uniquely related to your organization. NOTE:You should also check other related properties: http.robots.agents http.agent.description http.agent.url

http.agent.email http.agent.version
and set their values appropriately. </deseription>

</property>

(5)啟動Tomcat,打開瀏覽器在地址欄中輸入:http://localhost:8080

圖4-10 nutch查詢界面
F i g.4—10 Search i nterfaee of nutch

Nutch的安裝分為3個層次:基于本地文件系統(tǒng),基于局域網(wǎng),或者基于 intemet。不同的安裝方式具有不同的特色。比如:索引一個本地文件系統(tǒng)相對 于其他兩個來說肯定是要穩(wěn)定多了,因為沒有網(wǎng)絡(luò)錯誤,也沒有緩存文件的拷貝。 基于Interact的搜索又是另一個極端:抓取數(shù)以千計的網(wǎng)頁有很多技術(shù)問題需要
解決。

因為使用Nutch可以很快速的幫助我們構(gòu)建自己的搜索引擎,尤其在使用局 域網(wǎng)或者在自己的網(wǎng)站開發(fā)一個內(nèi)部搜索引擎。而且Nutch的算法公開,不會像 某些網(wǎng)站提供的搜索智能查詢到特定的某些網(wǎng)頁。在測試nuteh的應(yīng)用性能時, 對此作出一番比較。 在使用爬蟲對Godeyes.cn做數(shù)據(jù)爬行,采用深度為3,線程數(shù)為3進行爬行 建立索引庫。并對本地的索引庫查詢,發(fā)現(xiàn)使用Godeyes只能查詢到部分信息, 而Nutch返回信息數(shù)目更多。它的評分算法是按照關(guān)鍵詞出現(xiàn)頻率大小和文檔本 身的分值有關(guān)。比如說查詢關(guān)鍵詞“GPS”,Godeyes返回8條信息。

第4章主題搜索引擎的實現(xiàn)

圖4-”查詢關(guān)鍵字“GPS”結(jié)果比較圖
Fig.4-11 Contrast chart of search GPS

而用nutch查詢GPS可以搜索到13條結(jié)果 在長句查詢時,G0deyes效果相當(dāng)差,而Nutch可以收到一定的效用 比如查詢關(guān)鍵詞:“可以支持不同的GPS軟件”,Nutch可以搜索到部分相關(guān)信
息.

匭巫受獺蛭匱熏兩二二二二二二]圈唑
第l-頌(事}有2項查詢結(jié)果):

壘12d!冀磐煎凸翌!照垂塑塾堂甚塑皂至遜翌:掛工望I蟲,)二二上置Z量 …了圣誕之前.不過比較可’睹的是我們并投…問跟進這個…
J/v,nT,rv,1 godeyes

cPJdownload

a¥p

a圖廈‘廢衛(wèi)虱)吐臼趟蘭攫D(童塹址£0

Q19越!至g!熊里壁

…版本定為Frcc軟件.可以不限時間地自…對Pro感并趣的… h“P/,mw即d。yc;‘tu'ge flew礎(chǔ)p(圍叵怯職)島隆過至白勤(墼幽全國
圖4-12 Nutch長句查詢結(jié)果
Fig.4-12 Search resuIt of Iong sentence in nutch

而Godeyes內(nèi)部查詢卻不能查詢到信息

}搜索關(guān)鍵字一可以支持不同的GPs軟件
;沒有記錄j
圖4-1 3 Godeyes長旬查詢結(jié)果
Fig.4-12 Search resuIt of tong
sentence

in Godeyes

基于以上比較可知在nutch快速建立自己的搜索引擎,并且優(yōu)化的基礎(chǔ)上, 可以很好的應(yīng)用在企業(yè)內(nèi)網(wǎng)或本地搜索上。而且hutch的評分規(guī)則透明,對用戶 而言很公正。

43

成都理工大學(xué)碩士學(xué)位論文

4.4對中文分詞的處理
4.4.1計算所漢語詞法分析系統(tǒng)l
CTCLAS

詞是最小的能夠獨立活動的有意義的語言成分,但漢語是以字為基本的書 寫單位,詞語之間沒有明顯的區(qū)分標記,因此,中文詞法分析是中文信息處理的 基礎(chǔ)與關(guān)鍵。所謂分詞,就是指把一個完整的句子劃分為一個個詞條(Token) 的過程。這種詞條應(yīng)當(dāng)滿足某種語言規(guī)則,以便宇為其建立索引。只有通過這樣 的方式才能完成對一種語言的分析和檢索。為此,中國科學(xué)院計算技術(shù)研究所在 多年研究基礎(chǔ)上,耗時一年研制出了基于多層隱馬模型的漢語詞法分析系統(tǒng)
ICTCLAS(Institute ofComputing
Technology.Chinese Lexieal Analysis

System),該

系統(tǒng)主要功能包括中文分詞;詞性標注;命名實體識別;新詞識別;同時支持用
戶詞典。分詞正確率高達97.58%,基于角色標注的未登錄詞識別能取得高于90%

召回率,其中中國人名的識別召回率接近98%,分詞和詞性標注處理速度為
543.5KB/s[22]。

在獲取計算所返回的注冊碼后可以進行有效測試。并且利用計算所提供的 ICTCLAS3.0動態(tài)鏈接庫和詞典文件進行二次開發(fā)。
4.4.2編寫新的AnaIyzer

Nutch分詞的最底層使用的是Lucene的Analyzer抽象類,它位于analysis 包中,NutchAnalyzer繼承了Analyzer類、實現(xiàn)了Configurable、Pluggable接口.。 抽象類中定義了一個公有的抽象方法tokenStream(String
fieldName,Reader reader)

返回的類型是TokenStream。該方法是用于分析文本,其后的具體類中在這個方 法中實現(xiàn)了從文本中提取索引詞組的策略、算法。而返回的TokenS仃eam類是即 可以從文本或者從查詢詞組中枚舉token序列的抽象類,在Lueene中繼承了它 的具體類有Tokenizer、TokenFilter。 NutchAnalyzer類是Nutch中擴展分析文本的擴展點,所有用于解析文本的插 件都得實現(xiàn)這個擴展點。對于Analyzer一個典型的擴展就是首先建立一個 Tokenizer,它是用于將Reader中讀入的Stream分解成最原始的Token,在 Tokenzier分解Stream之后,一個或多個TokenFilter會用于過濾這些詞組中無意
義的詞組。

NutchDocumentAnalyzer類繼承了NutchAnalyzer,其中有三個靜態(tài)私有內(nèi)部 類ContentAnalyzer、AnchorFilter、AnchorAnalyzer它們分別繼承了Analyzer、
TokenFilter、Analyzer。在ContentAnalyzer中調(diào)用了CommonGrams類,該類構(gòu)

第4章主題搜索引擎的實現(xiàn)

建了一個n-grams的分詞方案,因為需要在索引中考慮詞組的出現(xiàn)頻率,并且實 現(xiàn)了對n-grams方案詞組查詢的優(yōu)化措施。在n-grams方案中單個的詞組同樣會 被該方案索引,索引期間大量使用了Token的各種方法,并且還會調(diào)用 nutch/conf/nutch—default.xml中analysis.COlnrflon.terms.file的配置屬性,其上各個
類與接口的UML圖如下:

圖4-14分析器類與接口的。虉D
Fig.4—14 UilL chart in ariafyzer classes and i rrterface

Lucene本身的StandardAnalyzer提供了中文分詞接口,不過其采用的為 1-gram,默認的切分規(guī)則是按一個個漢字分的。這種分詞方法雖然不會損失任 何索引信息,但是造成的索引垃圾太多,用戶得到的查詢結(jié)果中垃圾也是很多. 如果要更好的分詞,編寫自己的Analyzer,只要把他們包裝成Lucene的 TokcnStream就可以了。再利用已有的詞典,然后根據(jù)正向最大匹配法或者逆向最 大匹配法寫了一個分詞方法,并且應(yīng)用在Lucene中。 MyChineseAnlyzer在中文分詞方面使用JNI調(diào)用ICTCLAS的java接口.所 以其在中文方面性能上與ICTCLAS相同。其在英文分詞上采用了Lucene的 StopAnalyzer,可以去除stopWords,而且可以不區(qū)分大小寫,過濾掉各類標點符號. 完全兼容Lucene的底層分詞格式。
public final class MyChineseAnlyzer extends p而vate Set stopWords;

Analyzer{

/,可以在此擴展需要去除的FILTER STOP WORDS public static final String[】FILTER—STOP—WORDS={
”a”,”all”,”and”,”are”,”as”,”at”,”be”,”but”,”by”,”我”,”的”,”如果”,”是” );
public

MyChineseAnlyzer(String[】stopWords){

this.stopWords=StopFilter.makeStopSet(stopWords); )
public

MyChineseAnlyzer 0{

成都理1=大學(xué)碩士學(xué)位論文

stopWords=StopFilter.makeStopSet(FILTER_STOP_WORDS); }
public TokenStream

tokenStream(String fieldName,Reader reader){

try{ splitWord=new ICTCLAS300; inputString=FilelO.readerToString(reader); String resultString=splitWord.paragraphProcess(inputString); return new StopFilter(new LowerCaseTokenizer(new StringReader(resultString)), stopWords); } catch(IOException e)(
String ICTCLAS30

System.out.println(”轉(zhuǎn)換出錯”);
return null;

} )

) 用MyChineseAnlyzer進行索引,查詢,測試。效果很好.可以很明顯觀察到使 用后的分詞效果得到改善,接近于人工分詞的效用。很好的體現(xiàn)了引用分詞后的
特色。

范例句子:“正如地球圍繞太陽轉(zhuǎn),飛行的物體以拋物線的軌跡降落等等現(xiàn) 象,我們的搜索領(lǐng)域能不能模擬一個類似地球這種具有萬有引力的智能化程序,
暫且稱之為慣性搜索!

分詞后的效果:正/d如/v地球/n圍繞/v太陽/n轉(zhuǎn)/v,/wd飛行/vi的

/udel物體/n以/p拋物線/n的/udel軌跡/n降落M等等/udeng現(xiàn)象/n,/wd
我們,rr的/udel搜索/vn領(lǐng)域/n能/v不能/v模擬/v一個/mq類似/a地球,n 這種/r具有/v萬有引力/n的/udel智能化/vn程序/n,/wd暫且/d稱之為/v慣 性/n搜索/vn。/wj Nutch中要使用中文分詞,因為中文分詞程序的速度很快,需要分詞的每篇 文章字數(shù)不會達到需要占用其很長時間的程度。因此,對于每篇文章分詞的請求 可以看作是大量短小線程的請求,此時使用線程池技術(shù)是非常合適的,它可以極 大減小線程的創(chuàng)建和銷毀次數(shù),提高程序的工作效率。

結(jié)論與展望

結(jié)論與展望
結(jié)論:
本論文結(jié)合自己三年來對軟件開發(fā)知識的學(xué)習(xí)經(jīng)驗總結(jié),結(jié)合當(dāng)前熱門的研 究對象搜索引擎技術(shù)展開研究。結(jié)合當(dāng)前熱門的開源項目Lueene深入研究分析。 并結(jié)合中文分詞技術(shù),把中文搜索更好的融合進該研究課題中。 本論文通過對開源框架的實現(xiàn)驗證,得出以下結(jié)論: (1)本文通過提出按主題行業(yè)分類信息,建立相關(guān)主題詞庫的觀點,選擇性 能好、效率高、經(jīng)濟合理的技術(shù)框架,從而更高效的快速建立主題搜索引擎,具 有現(xiàn)實的意義。 (2)由于Lucene只支持單字的分割建立索引,通過引入ICTCLAS分詞程序?qū)?它進行改進,提高查詢效果。 (3)對開源框架Lucene的源碼和結(jié)構(gòu)進行了較為深入的研究,并在此基礎(chǔ)上 進行二次開發(fā),由于Lucene的排序算法是透明的可以修改,可對該評分體系進 行改進,提升相關(guān)主題信息的分值,使得查詢結(jié)果更加接近用戶的需求。 (4)通過實例驗證,對某一主題網(wǎng)站建立索引庫,并進行分析查詢,把建立 的主題搜索引擎查詢結(jié)果和網(wǎng)站現(xiàn)有的搜索結(jié)果進行比較分析,對長句查詢具有
更好的效果。

展望:
對主題搜索引擎研究還在進一步的探討中,尤其主題詞庫的更新和效率需要 得到改進。怎樣更加公平的讓用戶得到滿意的查詢結(jié)果也是我們將要面對的問 題。高效的算法、用戶的潛意識期望結(jié)果、硬件設(shè)施的更新等等都需要更好的去
摸索和改進。

從最初的電子黃頁開始,到如今的各種搜索概念的崛起。搜索市場充滿了各 種挑戰(zhàn),不但是技術(shù)上要保持優(yōu)勢,市場運營的策略也至關(guān)重要,怎樣吸引更多 的用戶來關(guān)注。像搜索引擎優(yōu)化(SEO)就是專門針對各個超級搜索公司來研究 推廣他們的技術(shù)成果。優(yōu)化的過程就是琢磨大公司具體采用的什么排序算法,怎 樣讓自己的網(wǎng)站能更多的被搜索到。各種圍繞搜索引擎的行業(yè)由此展開。 搜索是一種服務(wù),外界對搜索引擎的評價體系形式多樣,除了當(dāng)前的競價排 名,未來基于搜索的商業(yè)模式和業(yè)務(wù)模式會在網(wǎng)絡(luò)廣告、電子商務(wù)、付費信息服 務(wù)等方面有所突破,個性化搜索及搜索分析將占主導(dǎo)地位。 搜索引擎的概念在不斷的突破,諸如:語義搜索(結(jié)合上下文語境和專業(yè)領(lǐng) 域搜索)、挖掘式搜索(使搜索結(jié)果和用戶的意圖相關(guān))、群體搜索(搜索的結(jié) 果可以加入到對結(jié)果網(wǎng)頁的評估中,從而避免計算機算法的缺陷),F(xiàn)在或許我

結(jié)論與展望

們的某些技術(shù)實現(xiàn)不了,但是結(jié)合人工智能的深入研究,我們將會開拓新的搜索 領(lǐng)域。正如地球圍繞太陽轉(zhuǎn),飛行的物體以拋物線的軌跡降落等等現(xiàn)象,我們的 搜索領(lǐng)域能不能模擬一個類似地球這種具有萬有引力的智能化程序,暫且稱之為
慣性搜索。

由于本人能力有限,再加上時間倉促,本文不可避免的存在很多問題,希望 大家批評指正。

48

致謝

致謝
光陰荏苒,時間如梭,轉(zhuǎn)眼間三年研究生求學(xué)生涯即將結(jié)束,迷茫、欣喜、 激動與歡樂伴隨著我度過人生中的這段美好時光,此時此刻有說不盡的感慨與喜 悅,更有道不完的感激與感恩。 首先感謝我的導(dǎo)師苗放教授這三年來對我的培養(yǎng)、關(guān)心與教導(dǎo),在我求學(xué)期 間,為我提供了大量的學(xué)習(xí)機會和研究場所,使我在研究方法、工作態(tài)度和治學(xué) 態(tài)度上得到了很好的鍛煉與提高。苗老師嚴謹?shù)闹螌W(xué)態(tài)度、深厚的學(xué)術(shù)造詣、高 度的責(zé)任感和虛懷若谷的為人品格深深的感染著我,使我受益匪淺。在此謹向苗 老師表示衷心的感謝! 感謝在我學(xué)習(xí)生活巾給予幫助的各位同門。從研究生入學(xué)開始,就受到各1:c7= 同門的關(guān)心和幫助,在學(xué)習(xí)上給予我莫大的支持和鼓勵,特別感謝師兄王權(quán)海博 士,在項目合作期間備受他的指導(dǎo)和關(guān)心。感謝陳建華博士、劉瑞博士、曹禮剛 博十、史聞博、梁君、汪國華、胡文藝、王娟等師兄師姐對我學(xué)習(xí)的幫助。感謝 黃皓、葉成名、梁軍、李治強、夏濤、王海蓉、覃宇E、楊智翔、周宇鵬、郝慶 華、李海鷹等同門,和你們在一起學(xué)習(xí)討論的日子讓我受益匪淺。感謝四蕊對我 的論文進行幫助和修改,謝謝你對論文無私的細心整理。感謝同門的師弟師妹們 對我學(xué)習(xí)的支持和幫助。感謝信工院的各位曾經(jīng)一起相處過的同學(xué)和朋友們。 感謝在我本科期間給予我學(xué)習(xí)成長莫大幫助的各位老師,一日為師,終身為 師。你們的教誨t卜我錦記于心。感謝王賀、劉超、叢群等同學(xué),你們在我的學(xué)習(xí) 生涯給予了巨大的支持、幫助和鼓勵。感謝所有在我學(xué)習(xí)生活中出現(xiàn)過的人們, 我的成長都離不開你們的影響,讓我對生活,對社會有了更加深刻的認識和把握。 感謝在我學(xué)習(xí)過程巾給予我提供實習(xí)機會的四川眾誠信息技術(shù)有限公司和 上海創(chuàng)遠有限公司,感謝和我‘起工作過的同事,謝謝你們對我的幫助,讓我在 技術(shù)上得到很大進步,使我對計算機行業(yè)有了更深刻的認識和發(fā)展的信心。 養(yǎng)育之恩,終生難忘,感謝我的爸爸、媽媽、舅舅、舅媽和全家人,在我十 余年求學(xué)生涯中對我的關(guān)懷和支持,讓我能夠健康的成長,教會我懂得怎樣做人, 你們的言傳身教,讓我一輩子都不能忘懷。沒有你們的理解和支持也就沒有我今 天的成績。你們永遠在我的心里是最最重要的。謝謝你們1

黃波
2007年5月于成都

49

參考文獻

參考文獻
[1】牛志奇,丁天,天蘊哲等譯.J2EE核心模式.【M】北京:機械工業(yè)出版社,2004. [2】車冬Lucene:基于Java的全文檢索引擎簡介[online].Available
hap://www.chedong.com/tech/lucene.html>2002 www<URL:

[3]Apache Lucene project[onl ine].Avai lable

WIFW<URL:http:/flucene.apache.o喧/>

【4]侯震宇主題型搜索引擎的研究與實現(xiàn)[D】北京:中國科學(xué)院文獻情報中心2003 [online].Available www<URL: [5]博客園 論搜索技術(shù)對人類的四大社會性意義
http://zhuyi.cnblogs.com/>2006

[6】羅昶第四代搜索引擎一主題搜索引擎的設(shè)計與實現(xiàn)[D]北京:北京大學(xué)計算機科學(xué) 技術(shù)系計算機軟件專業(yè)
院2006
1 997

【7】陳杰主題搜索引擎中網(wǎng)絡(luò)蜘蛛搜索策略研究【D]浙江:浙江大學(xué)計算機科學(xué)技術(shù)學(xué) 【8】曹紅林業(yè)主題搜索引擎研究【D】北京:北京林業(yè)大學(xué)林業(yè)信息管理2005 [9]Erik Hatcher,Otis
Gospodnetic
Lucene In

Action[M]Manning Publications

2004

【10】李剛宋偉邱哲編著Ajax+Lucene構(gòu)建搜索引擎[M】北京:人民郵電出版社2006 [1 1]金靈等譯Ajax基礎(chǔ)教程[M]北京:人民郵電出版社2006 [12】孫衛(wèi)琴李烘成著Tomcat與Java Web開發(fā)技術(shù)詳解[MIlL京:電子工業(yè)出版社2005 [13]伽瑪?shù)戎,李英軍等譯.設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機械工業(yè) 出版社,2000 [14]王宇,林琪,杜志秀等譯.JAVA設(shè)計模式.[M]北京:中國電力出版社,2003 [15兒美】霍斯特曼等著,程峰等譯.Java 2核心技術(shù)卷I[M】.北京:機械工業(yè)出版社,2003 【16】劉坤等譯.J2EE技術(shù)內(nèi)幕【M】北京:機械工業(yè)出版社,2002 [17]柴曉路Web服務(wù)架構(gòu)于開放互操作技術(shù)[M】北京:清華大學(xué)出版社2002 [18】李安渝Web Services技術(shù)與實現(xiàn)【M】北京:國防工業(yè)出舨社2003 [19]劉樹春等.用Apache建立Web站點.[M】北京:電子工業(yè)出版社.2001 [20]設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M】.北京:機械工業(yè)出版社2000 [21】黃理等.JSP高級編程.[M】北京:北京希望電子出版社.2001 [22]中文自然語言處理開放平臺[onl ine].Avai lable WWW<URL:http://www.nlp.org.cn/> [23】中文全文檢索網(wǎng)『online].Available WWW<URL:http://www.fullsearcher.com/> [24]PluginCentral—NutchWiki[online].Available WWW<URL:http://wiki.apache.org/nutch/
PluginCentral>

[25】Nutch tutorial[online】.Available WWW<URL:http:#lucene.apache.org/nutch/tutorial8.html> [26】黃波基于Ajax的客戶端應(yīng)用(J】成都:計算機應(yīng)用研究增刊2007 [27】何世林基于Java技術(shù)的搜索引擎研究與實現(xiàn)[D】成都:西南交通大學(xué)計算機應(yīng)用
2003

[28】車志軍人工智能在搜索引擎資源獲取中的應(yīng)用[D】浙江:浙江大學(xué)軟件學(xué)院2006 [29]相生昌 搜索引擎系統(tǒng)學(xué)習(xí)與開發(fā)實踐總結(jié)[c】北京:中國知網(wǎng)數(shù)圖研發(fā)部2005 【30]王亮搜索引擎及其相關(guān)性排序研究[D]武漢:武漢大學(xué)情報學(xué)2004

50

主題搜索引擎的研究與應(yīng)用
作者: 學(xué)位授予單位: 黃波 成都理工大學(xué)

相似文獻(10條) 1.學(xué)位論文 王常星 基于中文分詞的搜索引擎設(shè)計實現(xiàn) 2008
本項目是公司的電子商務(wù)網(wǎng)站項目下的一個關(guān)鍵子項目,項目的設(shè)計要求包括根據(jù)已有的分詞算法,實現(xiàn)自有的中文分詞系統(tǒng),設(shè)計實現(xiàn)一個規(guī)模 適中的搜索引擎系統(tǒng),具備較強的擴展性和穩(wěn)定性,控制搜索引擎的規(guī)模。 雖然搜索引擎技術(shù)目前已經(jīng)有較為成熟的解決方案,但是由于項目特別限定了搜索引擎,包括中文分詞處理技術(shù),都需要采用完全自有的設(shè)計方案 ,因此本文所針對的搜索引擎架構(gòu)設(shè)計,以及中文分詞算法的實現(xiàn),都沒有采用已經(jīng)成型的開源設(shè)計方案。 搜索引擎設(shè)計采用了層次化的設(shè)計結(jié)構(gòu),將搜索引擎劃分為五個層次,分別是接口層,核心層,存儲層,監(jiān)控系統(tǒng)和中文分詞系統(tǒng)。接口層負責(zé)處 理外部程序與搜索引擎的通信過程。核心層包括四個子系統(tǒng):中心控制系統(tǒng),競價系統(tǒng),搜索節(jié)點和分詞系統(tǒng),中心控制系統(tǒng)是搜索引擎的核心調(diào)度系 統(tǒng),競價系統(tǒng)是搜索引擎可以實現(xiàn)經(jīng)濟效益。存儲層是搜索引擎索引數(shù)據(jù)的存儲系統(tǒng)所在位置,其中包括了索引目錄服務(wù)和數(shù)據(jù)存儲節(jié)點,存儲節(jié)點可 隨需求進行擴展,增撤節(jié)點只要在目錄服務(wù)中作出相應(yīng)更新就可以實現(xiàn)存儲節(jié)點的擴展。搜索引擎集群在運行時,需要一個監(jiān)控系統(tǒng)來實時監(jiān)控系統(tǒng)各 服務(wù)以及網(wǎng)絡(luò)的運行狀態(tài),便于及時發(fā)現(xiàn)解決問題,保障系統(tǒng)的在線正常運行。中文分詞子系統(tǒng)在查詢和更新中被調(diào)用,進行信息的分詞處理。搜索引 擎?zhèn)子系統(tǒng)間的通信,采用了成熟的HTTP協(xié)議,該協(xié)議性能穩(wěn)定成熟,通過專門設(shè)計的HTTP Server達到非常高的傳輸性能。 搜索引擎的索引數(shù)據(jù)隨著時間的積累會越來越多,系統(tǒng)設(shè)計采取了分布式存儲方式來滿足搜索性能和存儲容量的兩方面要求,分布式的存儲結(jié)構(gòu)通 過一個目錄服務(wù)達到各節(jié)點數(shù)據(jù)同步的目的。 分詞系統(tǒng)實現(xiàn)了最大正向匹配切分結(jié)合tri-Gram排歧的分詞方法。

2.學(xué)位論文 李曉東 搜索引擎中中文分詞與糾錯模塊的設(shè)計與實現(xiàn) 2008
隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,各種應(yīng)用服務(wù)層出不窮,搜索引擎是其中最流行的一種服務(wù),僅次子電子郵件。伴隨著搜索引擎的普及,越來越多的人通 過使用搜索引擎,獲取日常工作和生活中需要的信息。 搜索引擎涉及多種技術(shù),其中,自然語言處理技術(shù)是其中重要的一種,它可以幫助搜索引擎提高查詢準確度,并豐富搜索引擎的特色功能。中文分 詞技術(shù)與中文糾錯技術(shù)是自然語言處理技術(shù)的兩個分支,可應(yīng)用在搜索引擎的分析系統(tǒng)與檢索系統(tǒng)中,對于提高用戶檢索效率和檢索結(jié)果準確度具有十 分重要的意義。 論文選題來源于一個提供旅游信息搜索的搜索引擎系統(tǒng)。文中對中文分詞技術(shù)和中文查詢詞糾錯技術(shù)進行了研究,并從軟件工程的角度出發(fā),設(shè)計 與實現(xiàn)了系統(tǒng)的中文分詞模塊與糾錯模塊。具體的工作包括: (1)對一種基于規(guī)則的分詞算法進行了改進,使用雙hash詞典結(jié)構(gòu)降低了算法正向、反向最大匹配時的匹配次數(shù);使用正反最大匹配切分策略取代 逐詞切分策略,降低了算法切分字符串的次數(shù),提高了算法的分詞效率。 (2)通過相關(guān)算法研究提出并實現(xiàn)了一種基于拼音hash詞典的同音別字詞糾錯算法,應(yīng)用于搜索引擎系統(tǒng)中,用于同音別字詞的糾錯。 (3)改進了雙字驅(qū)動詞典的結(jié)構(gòu),并結(jié)合新的字符串模糊匹配算法對漏字多字查詢詞進行糾錯,增強了系統(tǒng)對漏字多字查詢詞的糾錯能力。 (4)將詞典技術(shù)與Ajax技術(shù)相結(jié)合,實現(xiàn)了查詢詞智能提示功能。 (5)采用N-gram切分的新詞識別算法,用于發(fā)現(xiàn)未登錄詞,實現(xiàn)分詞詞庫的動態(tài)更新,提高了中文分詞模塊的分詞準確度。 (6)在漏字多字查詢詞糾錯建議中,選擇相似度在一定范圍內(nèi)、詞頻數(shù)高于某一閥值的糾錯建議詞條,作為相關(guān)查詢詞,模擬了相關(guān)查詢詞推薦功 能的實現(xiàn)。

3.期刊論文 曹羽中.曹勇剛.金茂忠.劉超.CAO Yu-zhong.CAO Yong-gang.JIN Mao-zhong.LIU Chao 支持智能中文 分詞的互聯(lián)網(wǎng)搜索引擎的構(gòu)建 -計算機工程與設(shè)計2006,27(23)
中文分詞技術(shù)對中文搜索引擎的查準率及查全率有重大影響.在剖析開源搜索引擎Nutch的源代碼結(jié)構(gòu)的基礎(chǔ)上,基于JavaCC實現(xiàn)了一個可擴展的詞法 分析器并將其與Nutch集成,構(gòu)建了一個支持智能中文分詞的互聯(lián)網(wǎng)搜索引擎NutchEnhanced.它可用作評測各類中文分詞算法對搜索引擎的影響的實驗平 臺.對NutchEnhanced的搜索質(zhì)量與Nutch、Google、百度進行了,對比評測.結(jié)果表明它遠優(yōu)于Nutch,其查全率達到了0.74,前30個搜索結(jié)果的查準率達到 了0.86,總體上具有與Google,百度接近的中文搜索質(zhì)量.

4.學(xué)位論文 朱海星 基于Lucene的搜索引擎的研究與應(yīng)用 2007
本文對搜索引擎技術(shù)進行了深入的研究,并且探討和實現(xiàn)了搜索引擎在企業(yè)中的應(yīng)用。分析了當(dāng)前的幾種中文分詞技術(shù),并在此基礎(chǔ)上設(shè)計出了自 己的中文分詞算法,該算法達到了很好的中文分詞效果。最終,利用Lucene和自行設(shè)計的中文分詞工具實現(xiàn)了企業(yè)搜索引擎。全文的主要內(nèi)容是: 一、對搜索引擎的原理和組成進行了研究。 二、由于搜索引擎在迅速激增的企業(yè)內(nèi)部信息資源中的使用越來越重要,提出了針對企業(yè)信息的專業(yè)搜索引擎:企業(yè)搜索引擎技術(shù)。 三、研究全文檢索技術(shù)和中文分詞技術(shù),在研究前人的分詞技術(shù)的基礎(chǔ)之上,基于開源全文搜索引擎Lucene,實現(xiàn)了一個自己的中文分詞算法。 四、設(shè)計并實現(xiàn)了一個基于Web的企業(yè)信息搜索引擎。

5.期刊論文 顧愛華.趙泉.周塔.彭昱靜.衛(wèi)麗.徐瑩瑩.鄒盛榮 中文分詞技術(shù)在搜索引擎中的探討 -科技信息 2009(35)
本文通過深入探討中文分詞菝術(shù)在搜索引擎中的算法描述,并詳細介紹機器不斷地學(xué)習(xí)新詞、動態(tài)地維護詞典的模型,嘗試解決最棘手的處理新詞問 題,使其更好地為分詞提供更智能描述特別是對新詞.

6.期刊論文 王華棟.饒培倫.WANG Hua-dong.RAO Pei-lun 基于搜索引擎的中文分詞評估方法 -情報科學(xué) 2007,25(1)
中文分詞的結(jié)果是影響搜索引擎中文檢索結(jié)果質(zhì)量的重要因素,能否準確有效的分詞對提高搜索結(jié)果的相關(guān)性和用戶滿意度都至關(guān)重要.本文回顧和 整理了中文分詞評估所依靠的理論依據(jù),同時建立了一套完整的基于搜索引擎中文分詞評估方法.這套評估方法涵蓋了評估樣本的提取、評估人員選取、 評估標準的制定、以及評估流程的設(shè)置等各個方面.實例分析的結(jié)果表明此方法是行之有效的.在此基礎(chǔ)上,作者進一步對實驗評估的結(jié)果進行了深入討論 ,并提出了提高評估效果的幾條建議,包括如何考慮評估人員背景、取舍評估項目等.

7.學(xué)位論文 馬志強 校園網(wǎng)搜索引擎核心技術(shù)——中文自動分詞 2006
隨著計算機技術(shù)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,校園網(wǎng)作為學(xué)校內(nèi)部信息共享、校際間信息交流的平臺也得到了快速發(fā)展。校園網(wǎng)上信息量的增加,以及 信息的分布存儲,給用戶檢索信息帶來了困難。導(dǎo)致校園網(wǎng)上大量資源得不到充分利用,造成了信息資源的浪費。校園網(wǎng)搜索引擎是一個對校園網(wǎng)內(nèi)部 信息資源進行搜集整理,然后供用戶查詢的系統(tǒng),它包括信息搜集,中文分詞,索引和檢索四個部分。 本課題是校園網(wǎng)搜索引擎課題的一個子課題。研究的目的是為校園網(wǎng)搜索引擎課題提供一個高效的中文分詞軟件包。為了實現(xiàn)這一目標,首先建立 了中文分詞子系統(tǒng)實驗平臺的結(jié)構(gòu)模型以及與其它模塊間的數(shù)據(jù)接口;然后,通過對詞典結(jié)構(gòu)機制、未登錄詞識別和分詞算法的研究,提出了適合校園 網(wǎng)搜索引擎中文分詞的一整套解決方案。該方案是以機械分詞為基礎(chǔ),包括逆向詞庫的建立與擴充、基于整詞二分的二層索引結(jié)構(gòu)、基于規(guī)則統(tǒng)計的未 登錄詞識別算法以及改進的逆向最大匹配算法等。最后,實現(xiàn)了中文分詞子系統(tǒng)實驗平臺以及中文分詞軟件包,并進行了速度和內(nèi)存容量的測試,得到

了字典占用內(nèi)存4.28M,分詞速度每秒11k字節(jié)的實驗數(shù)據(jù)。實驗表明,這個分詞軟件包可以滿足當(dāng)前校園網(wǎng)搜索引擎課題的使用。 本論文中提到的中文分詞子系統(tǒng)實驗平臺和中文分詞軟件包是在 JDK 1.4和Oracle9i上實現(xiàn)的。

8.學(xué)位論文 任海一 基于上下文分析的中文分詞算法研究 2006
隨著Internet的迅速發(fā)展,網(wǎng)上信息不斷豐富和發(fā)展起來。越來越多的人習(xí)慣在網(wǎng)上發(fā)布和獲取信息。但是這些信息卻是以各種形式龐雜無序地散 布在無數(shù)的服務(wù)器上,更新變化快,用戶要得到真正有價值的東西有很大的困難。因此,網(wǎng)絡(luò)搜索引擎應(yīng)運而生。然而,對于中文來講,漢語以字為基 本的書寫單位。作為能夠獨立活動的有意義的最小語言成分的卻是詞。這與拉丁語系的語言以空格作為詞界不同。在漢語中詞與詞之間沒有明顯的區(qū)分 標記。因此在搜索引擎的整理加工階段,重點需要解決的問題就在于如何準確的進行詞的切分。 本文專注于中文分詞的優(yōu)化性的研究,通過研究比對機械匹配算法和詞頻統(tǒng)計算法的各自的優(yōu)缺點,提出應(yīng)用馬科夫鏈來表示中文分詞的切分過程 ,并基于概率論提出語義切分理論,同時總結(jié)出語義信息函數(shù),針對目前分詞不準確,易于產(chǎn)生歧義等主要問題,對分詞系統(tǒng)進行了優(yōu)化處理,并最終 提出了基于上下文分析的中文分詞的算法。通過實驗證明了基于上下文分析的中文分詞算法的準確率提高,是目前較好的中文算法之一。 本文的結(jié)構(gòu)如下:第一章首先講述搜索引擎的現(xiàn)狀,由此進行對比中外搜索引擎的不同,同時引出中文搜索引擎的分詞問題;第二章介紹中文分詞 的相關(guān)概念以及技術(shù)難點和基本狀況;第三章主要闡述中文分詞目前的研究成果和對主流的中文分詞系統(tǒng)的分析;第四章主要講解本文提出的基于上下 文分析的中文分詞算法的基本思想和實現(xiàn)目標。算法實現(xiàn)的過程,包括設(shè)計思想和實現(xiàn)的方法;第五章總結(jié)算法的不足之處,以及需要今后繼續(xù)提高的 部分。

9.期刊論文 李艷欣.LI Yan-xin 搜索引擎中中文分詞的研究 -電腦知識與技術(shù)(學(xué)術(shù)交流)2007,2(8)
針對目前最常用的分詞算法--最大匹配算法效率低,長度受限等缺點,在對中文編碼體系和中文分詞的算法進行研究的基礎(chǔ)上,提出了一種新的詞庫數(shù) 據(jù)結(jié)構(gòu).它支持首字Hash和標準二分查找,而且不限制詞條的長度.然后介紹了基于該詞庫設(shè)計的一種快速的分詞算法,并給出了算法的實現(xiàn)過程.

10.學(xué)位論文 陸宵宏 基于P2P的搜索引擎的關(guān)鍵技術(shù)研究 2009
Peer-to-peer(P2P)技術(shù)的一個優(yōu)勢便是開發(fā)出強大的搜索工具。隨著互聯(lián)網(wǎng)的快速發(fā)展,搜索引擎作為一個網(wǎng)絡(luò)用戶所需的信息檢索工具,其作用 性越來越受到人們的重視。就中文用戶而言,提高搜索引擎的效率的關(guān)鍵因素是中文分詞匹配效率與搜索引擎索引檢索效率的提高。 本文首先對P2P技術(shù)進行了闡述,包括P2P的定義、P2P模式與C/S模式的比較、P2P的特點以及P2P技術(shù)在搜索方面的應(yīng)用及優(yōu)勢;其次對P2P搜索算法 進行了分類探討,重點研究和分析了幾種P2P搜索算法,并指出它們的優(yōu)缺點。對以傳統(tǒng)索引方和倒排索引方這兩種索引方式為核心的基于P2P的搜索引 擎和其他幾種典型的搜索引擎也進行了各方面的比較。接著,為了克服傳統(tǒng)的集中式搜索引擎的缺點,針對中文分詞本文提出了基于樹狀詞庫進行中文分 詞,這種經(jīng)過優(yōu)化的分詞方法使傳統(tǒng)的匹配算法效率得到大大地提高,并結(jié)合XML技術(shù)為中文分詞提出并實現(xiàn)了可行的解決方案:本文設(shè)計了基于XML與 B+樹的倒排索引算法建立索引器的索引解決了傳統(tǒng)的正、倒排索引模型實時更新性能差的缺點。將搜索引擎架設(shè)在P2P分布式網(wǎng)絡(luò)結(jié)構(gòu)之上,利用P2P的 良好的分布式特性,使搜索引擎從集中式走向分布式,使搜索引擎能更深度、更廣度地搜索互聯(lián)網(wǎng)上的用戶可用的信息。 基于樹狀詞庫與XML的中文分詞方法使得搜索引擎對中文文段進行分詞時更為準確。基于XML的倒排索引建立解決方案從新的角度探索了中英文混合 檢索的底層機制,使得搜索引擎在索引器中進行索引檢索、尋找其相關(guān)的文檔更為快捷。 當(dāng)前,這方向的研究還處于試驗、探索階段,某些方面在理論上還需要有所突破,逐步使搜索引擎更好地服務(wù)于用戶。

本文鏈接: 下載時間:2010年5月14日



  本文關(guān)鍵詞:主題搜索引擎的研究與應(yīng)用,由筆耕文化傳播整理發(fā)布。



本文編號:170305

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/kejilunwen/sousuoyinqinglunwen/170305.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶58412***提供,本站僅收錄摘要或目錄,作者需要刪除請E-mail郵箱bigeng88@qq.com