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

正文內(nèi)容

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

2025-06-30 04:44本頁(yè)面
  

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