freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

最新移動環(huán)境下的搜索引擎軟件系統(tǒng)設(shè)計與實(shí)現(xiàn)-資料下載頁

2025-06-30 04:44本頁面
  

【正文】 tch生成的索引上工作。要注意的是,Lucene中也有片段(segment)這種說法,不過他和Nutch片段是不一樣的。Lucene片段是Lucene索引的一部分,而Nutch片段只是在Webdb的抓取和索引中用到,并不是最后的索引。 Nutch的插件體系結(jié)構(gòu) Nutch插件是是一個能夠?qū)崿F(xiàn)系統(tǒng)最核心內(nèi)容的功能擴(kuò)展定制器,包含有為其它插件提供擴(kuò)展API的容器。在正常的情況下,一個插件能夠提供一個擴(kuò)展或者擴(kuò)展集,并由插件管理系統(tǒng)來啟動和管理。常見的應(yīng)用是利用插件來幫助數(shù)據(jù)庫進(jìn)行啟動或者是關(guān)閉的連接。 在Nutch源代碼的plugin包中Plugin類中的PluginDescriptor提供訪問Nutch插件的配置文件的元信息、插件自身的類裝載器及插件、擴(kuò)展點(diǎn)、擴(kuò)展等元信息,該類同時保證了類的滯后加載機(jī)制。 擴(kuò)展點(diǎn)是能夠被第三方函數(shù)繼承的一個(類)插件。以發(fā)布者監(jiān)聽者模式做個比喻,擴(kuò)展點(diǎn)相當(dāng)于發(fā)布者,并且必須以java接口的形式存在。,擴(kuò)展點(diǎn)應(yīng)該用唯一的名稱來標(biāo)示,并在配置文件中聲明),而實(shí)現(xiàn)該接口的類的對象被稱為回調(diào)對象。 擴(kuò)展是與擴(kuò)展點(diǎn)相對應(yīng)的,它實(shí)現(xiàn)了擴(kuò)展點(diǎn)定義的接口并返回期望格式的數(shù)據(jù)。也是對第三方提供的擴(kuò)展點(diǎn)的功能的增強(qiáng)。每個插件在插件對應(yīng)的配置文件中都有插件類文件,該文件繼承至Plugin類文件并可重載startup和shutdown方法。直到Nutch運(yùn)行時,僅有一個插件類文件的實(shí)例在JVM中存在。 插件配置文件是擴(kuò)展點(diǎn)和擴(kuò)展之間進(jìn)行通信的一種方式,一個配置文件有以下一些內(nèi)容: 插件屬性的節(jié)點(diǎn)集合。插件的屬性包括:唯一的名稱標(biāo)示、插件類實(shí)現(xiàn)的URL地址、版本號及提供者的名字。 輸出庫的節(jié)點(diǎn)集合。把庫輸出以便其它的插件能夠利用,同樣也可以利用其它插件的庫。依賴關(guān)系的節(jié)點(diǎn)集。任何插件至少需要Nutch核心插件提供的核心擴(kuò)展點(diǎn)的支持,也有可能依賴其它的插件。 擴(kuò)展節(jié)點(diǎn)。對擴(kuò)展的詳細(xì)描述。聲明的擴(kuò)展點(diǎn)的節(jié)點(diǎn)集。對擴(kuò)展點(diǎn)的詳細(xì)描述。插件的運(yùn)行過程: 第一步:插件的初始化(獲得擴(kuò)展點(diǎn)的過程)首先是獲得插件庫文件的實(shí)例,過程如下:調(diào)用PluginManifestParse類的parsePluginFolderO函數(shù)對Nutch插件所在的目錄進(jìn)行掃描,對每個插件依據(jù)default, xml文件中的plugin. includes的屬性值判斷是否生成對應(yīng)的插件描述符(即PluginDescriptor對象)列表。調(diào)用86106口611」607(^60]6(]?1。8;[115()對插件的依賴性進(jìn)行校驗(yàn),并把有效的擴(kuò)展點(diǎn)添加到插件庫文件的fExtensionPoints變量中。調(diào)用installExtensionsO 函數(shù)在Extension類的fExtension變量中添加擴(kuò)展。然后根據(jù)擴(kuò)展點(diǎn)的m獲得所需要的擴(kuò)展點(diǎn)。 第二步:使用getExtensionPoint ()函數(shù)在所獲得的擴(kuò)展點(diǎn)的變量fExtensions中取得相應(yīng)的擴(kuò)展點(diǎn),再通過getExtensions ()函數(shù)通過擴(kuò)展點(diǎn)得到,所有相應(yīng)擴(kuò)展點(diǎn)的擴(kuò)展插件列表。 第三步:根據(jù)擴(kuò)展插件列表啟動相應(yīng)的plugin實(shí)例,即完成插件類的加載。以上三步就完成了整個插件的使用。 處于對“妙搜”移動搜索引擎的設(shè)計考慮,我們將服務(wù)器端的系統(tǒng)大致分為以下的六個模塊,通過對內(nèi)容的抓取和對信息的索引處理,實(shí)現(xiàn)系統(tǒng)架構(gòu)的基本設(shè)置,這六個模塊分別是:內(nèi)容抓取子系統(tǒng)模塊,索引處理子系統(tǒng)模塊,搜索子系統(tǒng)模塊,聚類插件模塊,緩存子系統(tǒng)模塊以及通信層接口模塊。具體結(jié)構(gòu)示意圖如下圖所示:圖5. 4妙搜服務(wù)器系統(tǒng)架構(gòu)設(shè)計下面各節(jié)分別描述了各個模塊的具體設(shè)計思路及相關(guān)原理。 內(nèi)容爬取子系統(tǒng)是“妙搜”移動搜索引擎系統(tǒng)的主要內(nèi)容之一,它是利用了Nutch組件的爬取模塊。而在Nutch算法中的爬蟲工作的主要策略主要是累積式抓?。╟umulative crawling)和增量式抓取(incremental crawling)兩種。累積式抓?。╟umulative crawling)是指從某一時間節(jié)點(diǎn)起步,通過遍歷的形式對系統(tǒng)所能允許存儲和處理的所有網(wǎng)頁進(jìn)行抓取。累積式抓取(cumulative crawling)的主要功能則是,通過一定的策略,保證抓取到的網(wǎng)頁集合具有相當(dāng)?shù)囊?guī)模。然而集合中抓取網(wǎng)頁的時間節(jié)點(diǎn)往往是不同的,網(wǎng)頁的頁面也由于時常更新而變化莫測,(這主要是由于Web數(shù)據(jù)具有動態(tài)的特征)所以事實(shí)上運(yùn)用累積式抓取的網(wǎng)頁集合往往并不能反映真實(shí)情況下出現(xiàn)的網(wǎng)絡(luò)數(shù)據(jù),與實(shí)際的網(wǎng)絡(luò)數(shù)據(jù)存在著一定的出入。增量式抓取(incremental crawling)主要是在已經(jīng)具備一定數(shù)量的網(wǎng)頁集合之后,利用比較新的數(shù)據(jù)更新技術(shù),對集合中的網(wǎng)頁,主要是過時的網(wǎng)頁進(jìn)行抓取,以此來保證抓取的網(wǎng)頁數(shù)據(jù)的實(shí)時更新性,也由此使抓取到的網(wǎng)頁數(shù)據(jù)與實(shí)際環(huán)境中真實(shí)存在的數(shù)據(jù)具有較大的統(tǒng)一性和相符性。由此可見,增量式抓取(incremental crawling)的運(yùn)行是有一定的前提的,這個前提條件就是系統(tǒng)已經(jīng)抓取了足夠數(shù)量的網(wǎng)絡(luò)頁面并且對這些頁面的抓取時間戳是有明確的認(rèn)識的。在實(shí)際工作和網(wǎng)頁抓取中,包括面向?qū)嶋H應(yīng)用環(huán)境的網(wǎng)絡(luò)卿蛛設(shè)計中,往往是兩種抓取方式并行,累積式抓取和增量式抓取共同使用的策略,能夠發(fā)揮兩種抓取方式各自的優(yōu)勢所在。而累積式抓取多用在對數(shù)據(jù)集合的整體建立和對數(shù)據(jù)信息的大規(guī)模更新中;而增量式抓取所應(yīng)用的場所則更多是在數(shù)據(jù)集合的日常維護(hù)中和數(shù)據(jù)的即時更新上。 以下簡要介紹下網(wǎng)頁抓取的流程,其中分為以下幾個步驟:(1) inject操作。對初始設(shè)置的url進(jìn)行格式化、過濾、去重等操作后,將url 及其狀態(tài)以及分值存入crawldb數(shù)據(jù)庫。(2) generate操作。從crawldb數(shù)據(jù)庫中提取url,對其通過域名、鏈接數(shù)等算法將其降序排序后寫入segments目錄中。(3) fetch操作。是主要進(jìn)行網(wǎng)頁的抓取,采用多線程并行的方式以提高抓取效率。在抓取過程中若發(fā)現(xiàn)url地址發(fā)生改變,也會更新url列表。抓取到的頁面進(jìn)行parse操作,將其頁面分為以保存頁面的主題、出處、円期以及鏈接為內(nèi)容的parsedata和頁面文本內(nèi)容的parsetext。(4) updateclb操作。通過對segments里的內(nèi)容來更新crawldb數(shù)據(jù)庫。網(wǎng)絡(luò)爬蟲工作過程是基于MapReduce的分布式模式。以Inject模塊說明MapReduce的工作過程。其MapReduce的計算過程如下:* MapReduce 程序之一目的:將輸入轉(zhuǎn)換為CrawlDatum格式輸入:URL文件Map(line) URL, CrawlDatum〉Reduce0合并多重的URL輸出:臨時的CrawlDatum文件MapReduce 程序之二目的:合并上一步產(chǎn)生的臨時文件到新的DB) 輸入:上次MapReduce輸出的CrawlDatumMapO過濾重復(fù)的URLReduce0合并兩個CrawlDatum到一個新的DB輸出:CrawlDatum 作為子系統(tǒng)中的重要組成部分,索引子系統(tǒng)的功能主要是將抓取到子系統(tǒng)中的互聯(lián)網(wǎng)信息內(nèi)容進(jìn)行進(jìn)一步的處理,以此來為后續(xù)的搜索和查找奠定基礎(chǔ),便于快速的找到相應(yīng)的文檔。通過索引子系統(tǒng)設(shè)計,可以使用戶在每次查詢是,不要對全部文檔進(jìn)行順尋搜索掃描就可以快速找到所需要的內(nèi)容,大大提高了檢索的效率和速度。Nutch是使用lucene索引機(jī)制,其索引機(jī)制架構(gòu)如下圖:Lucene的索引結(jié)構(gòu)是有特定的層次結(jié)構(gòu)的,簡單介紹如下:(Index):索引的功能主要是在Lucene中建立一個文件夾,這個文件夾中的所有文件共同構(gòu)成了一個Lucene索引。(Segment):段是索引的組成部分,一個索引可以包含多個段,而且每個段和段之間是相互獨(dú)立的,通過添加新的文檔能夠生成新的端,不同的段之間是可以進(jìn)行合并的。(Document):文檔主要是被保存在各自不同的段中間的,它是系統(tǒng)建立索引的最基本單位,同一個段中可以有不同的文檔共存,而新增加的文檔往往是獨(dú)立的保存在一個新生成的段中,段與段是可以合并的,通過段與段的合并,不同的文檔有可能會合并在同一個段之中。(Field):所謂參域,是指一篇文檔包含不同類型的信息,具體又可以細(xì)化分為索引,例如標(biāo)題,時間,正文,作者等,都可以保存在不同的域里。(Term):在系統(tǒng)中,索引的最小單位是詞,索引就是經(jīng)過詞法分析和語言處理后的字符串。面對非結(jié)構(gòu)化數(shù)據(jù)中所存儲的信息是每個文件包含哪些字符串,也即已知文件,查找字符串相對容易,也即是從文件到字符串的映射。而實(shí)際想搜索的信息是哪些文件包含此字符串,也即已知字符串,查找對應(yīng)文件,也即從字符串到文件的映射。于是如果索引總能夠保存從字符串到文件的映射,則會大大提高搜索速度。由于從字符串到文件的映射是文件到字符串映射的反向過程,于是保存這種信息的索引稱為反向索引。反向索引的所保存的信息一般如下圖所示的結(jié)構(gòu)左邊保存的是稱為詞典一系列字符串。一般的系統(tǒng)運(yùn)行中,全文檢索的索引創(chuàng)建是需要以下四個過程的:,這里就是抓取子系統(tǒng)新抓取的文檔。將原文檔傳給分詞組件(Tokenizer)。將文檔分成一個一個單獨(dú)的單詞,去除標(biāo)點(diǎn)符號,去除停詞(Stop word,如:this a)。(Linguistic Processor)。語言處理組件主要是對得到的詞元做一些同語言相關(guān)的處理。對于英語,語言處理組件一般做以下幾點(diǎn):單詞變?yōu)樾?Lowercase)。將單詞縮減為詞根形式,如“cars”到“car”等;將單詞轉(zhuǎn)變?yōu)樵~根形式,如“drove到drive等。索引組件主要做以下幾件事情:(1)利用得到的詞創(chuàng)建一個字典。(2)對字典按字母順序進(jìn)行排序。(3)合并相同的詞成為文檔倒排鏈表。(4)建立索引并寫索引文件Lucene的索引結(jié)構(gòu)中,既保存了正向信息,也保存了反向信息:. 正向信息是按層次結(jié)構(gòu)保存了從索引一直到詞的包含關(guān)系。即索引包含了哪些段,每個段包含了哪些文檔,每個文檔包含了哪些域,以及每個域包含了哪些詞。反向信息保存了詞典到倒排表的映射:詞文檔。下面代碼片段是使用IndexWr iter對象lucene建立索引的過程。IndexWriter writer = new IndexWriter(indexPath,new SimpleAnalyzer(),false)。InputStream is = new FileInputStream(args[i])。Document doc = new Document ()。doc. add(Field. Text (body, (Reader) new InputStreamReader(is)))。//將文檔寫入索引writer. addDocument (doc): ://關(guān)閉寫索引器writer, close ()。其中,indexPath是指向索引文件夾。SimpleAnalyzer是文檔分詞器,這個文檔分詞器是使用中文分詞。利用lucene架構(gòu)建立索引的優(yōu)點(diǎn)如下:Lucene沒有定義具體的數(shù)據(jù)源,而是一個文檔的結(jié)構(gòu),因此可以非常靈活的適應(yīng)各種應(yīng)用。我們這里使用抓取的網(wǎng)頁作為數(shù)據(jù)源。大部分的搜索(數(shù)據(jù)庫)引擎都是用B樹結(jié)構(gòu)來維護(hù)索引,索引的更新會導(dǎo)致大量的10操作,Lucene在實(shí)現(xiàn)中,對此進(jìn)行了改進(jìn),不是維護(hù)一個索引文件,而是在擴(kuò)展索引的時候不斷創(chuàng)建新的索引文件,然后定期的把這些新的小索引文件合并到原先的大索引中(策略可以調(diào)整),這樣在不影響檢索的效率的前提下,提高了索引的效率。lucene支持內(nèi)存索引,這樣的搜索比基于文件的I/O有數(shù)量級的速度提升。在lucene架構(gòu)設(shè)計中語言分析器(Analyser)提供了抽象的接口,因此語言分析是可以定制的SimpleAnalyzer是標(biāo)準(zhǔn)語言分析器,可以替換自己實(shí)現(xiàn)的Analyzer實(shí)現(xiàn)中文分詞。Lucene可以對需要索引的域進(jìn)行加權(quán)操作。通過改變文檔的加權(quán)因子,就能指示lucene在計算相關(guān)性時或多或少的考慮到該文檔針對索引中其他文檔的重要程度。例如針對移動環(huán)境搜索引擎的位置敏感性,可以在索引期間對表示地理位置和地區(qū)名的詞進(jìn)行加權(quán)。Lucene的索引操作提供高性能并發(fā)、線程安全以及鎖的機(jī)制。保證高效的對索引的操作但有不會出現(xiàn)一致性錯誤。搜索就是處理查詢的關(guān)鍵字,并通過關(guān)鍵字搜索結(jié)果返回。主要分為以下幾步:參系統(tǒng)啟動hup服務(wù)器接口,通過網(wǎng)絡(luò)通訊接口接受用戶通過客戶端輸入的查詢語句。由于查詢語句是要求按照一定的語法的,所以需要對查詢語句進(jìn)行詞法分析,語法分析,及語言處理。詞法分析主要用來識別單詞和關(guān)鍵字;語法分析主要是根據(jù)查詢語句的語法規(guī)則來形成一棵語法樹。語言處理和索引中的語言處理一樣。查詢語句“Lucene and Learned not Hadoop“最終得到一棵經(jīng)過語言處理的語法樹,如下圖:圖5. 7查詢語法樹搜索索引,得到符合語法樹的文檔。首先,在反向索引表中,分別找出包含lucene,learn, hadoop的文檔鏈表。其次,對包含lucene,learn的鏈表進(jìn)行合并操作,得到既包含lucene又包含learn的文檔鏈表。然后,將此鏈表與hadoop的文檔鏈表進(jìn)行差操作,去除包含hadoop的文檔,從而得到既包含lucene又包含learn而且不包含hadoop的文檔鏈表。那么此文檔鏈表就是要找的文檔。根據(jù)得到的文檔和查詢語句的相關(guān)性,對結(jié)果進(jìn)行排序。對于查詢結(jié)果應(yīng)該按照與查詢語句的相關(guān)性進(jìn)行排序,越相關(guān)者越靠前。把查詢語句看作一片短小的文檔,對文檔與文檔之間的相關(guān)性進(jìn)行打分,分?jǐn)?shù)高的. 相關(guān)性好,就應(yīng)該排在前面。下面介紹計算相關(guān)性的兩個過程:(1)計算權(quán)重的過程。 影響一個詞在一篇文檔中的重要性主要有兩個因素:Term Frequency (TF):即此詞在此文檔中出現(xiàn)了多少次。TF越大說明越重要。Document Frequency(DF):即有多少文
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1