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

正文內(nèi)容

基于lucene的站內(nèi)新聞搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)(完整版)

2024-12-25 08:40上一頁面

下一頁面
  

【正文】 找文件的系統(tǒng):Archie。最后對實(shí)際項(xiàng)目進(jìn)行了測試,并分析了測試結(jié)果 。 目前第二代搜索引擎的設(shè)計(jì)思路為利用網(wǎng) 絡(luò)爬蟲建立數(shù)據(jù)源,結(jié)合分詞技術(shù)把數(shù)據(jù)源建成索引,利用索引從 海量的數(shù)據(jù)源 中得到搜索結(jié)果 ,對搜索的結(jié)果進(jìn)行篩選和排序 , 把最終的結(jié)果展示給用戶 ?;ヂ?lián)網(wǎng)的飛速發(fā)展,為我們開創(chuàng)了一個(gè)新時(shí)代。它不間斷高速執(zhí)行則某項(xiàng)任務(wù),就好像一個(gè)“ 機(jī)器人 ” 不斷在“互聯(lián)網(wǎng)”上穿梭, 這便是現(xiàn)在意義上的 “ spider” 。 Google 的成立標(biāo)志著第二代搜索引擎的誕生。 Lucene的原作者是 Doug Cutting,他是一位資深全文檢索專家, VTwin搜索引擎的主要開發(fā)者。但是由于新版本剛剛發(fā)布,穩(wěn)定性還不是很好, 基于 Lucene 的站內(nèi)新聞搜索引擎的設(shè)計(jì)與實(shí)現(xiàn) 第 2 頁 共 20 頁 本文還是按照成熟的 。與用戶有關(guān)的字詞,往往出現(xiàn)在文章的標(biāo)題和文章的正文中,這便是我們需要建立索引的域。它是 文檔檢索系統(tǒng) 中最常用的 數(shù)據(jù)結(jié)構(gòu) 。 按字索引 按字分詞可以解決所有的問題,使得搜索變的十分準(zhǔn)確,因?yàn)樽质菨h字的最小單位,我們只要知道輸入的是什么字,字與字之間的位置關(guān)系便可以確定整個(gè)搜索內(nèi)容。 庖丁解牛 這個(gè)算法只有 Java 版本,其中的分詞算法效率很高,和 JavaCC 中的詞法分析算法有一些類似。但是對中文分詞來說,效率上不夠。 (2) .fnm 包含了 Document中所有 Field的名稱。 初始化分詞器,設(shè)置好文件路徑。 索引的優(yōu)化通過 IndexWriter的 Optimize方法實(shí)現(xiàn)。 我們在建立搜索是不僅要考慮搜索的 數(shù)量和范圍,更要定義相關(guān)的過濾器來過濾搜索結(jié)果,最后針對各種需求詳細(xì)設(shè)計(jì)自己的搜索邏輯。 (2) Query 用于 查詢的 Lucene字詞類。 Lucene 高級搜索 (1) TermQuery 這是最簡單的一種 Query, 包括詞條本身的內(nèi)容和詞條所在的 Field的信息。通過這個(gè)便可以根據(jù)某種 前綴查找內(nèi)容了。通過這個(gè)便可以通過一個(gè)帶有通配符的字符串來進(jìn)行搜索。 而對于使用 BooleanQuery完成邏輯搜索,速度也遠(yuǎn)不如使用 TermQuery來的快。雖然根據(jù)不同的需求,可能產(chǎn)生 一些按照時(shí)間排序的情況出現(xiàn),但是排序中最重要的還是相關(guān)性排序。 就算只是考慮準(zhǔn)確性的因素,排序算法也顯得尤為重要。 (2) 反文檔詞頻 在某類文檔中出現(xiàn)某個(gè)關(guān)鍵字的文檔的次數(shù) Lucene 排序 相關(guān)類介紹 (1) Document 其中有個(gè) setBoost函數(shù)可以用來設(shè)置某個(gè)域的權(quán)重。即按照某個(gè)域的值,從小到大或者從大到小排序。首先,我們需要把文章中的詞劃分為三類。而我決定一般意義上要有 90%的準(zhǔn)確率才算合適,最好能達(dá)到 95%。這樣可以針對一些頻繁搜索的關(guān)鍵詞,另其轉(zhuǎn)到有人工分析出的應(yīng)該轉(zhuǎn)到的結(jié)果,比如:股票。 新聞搜索引擎的需求是搜索結(jié)果準(zhǔn)確,不能存在不符合要求的搜索結(jié)果,也不能遺漏搜索結(jié)果。因?yàn)樗饕膭?chuàng)建時(shí)間有可能直接影響到排序的結(jié)果,那么在創(chuàng)建文件時(shí)就需要額外注意遍歷文件的順序。 ID 字段是為了方便快速定位索引位置,方便對索 引進(jìn)行管理。 所以 索引的創(chuàng)建并不容易。 索引方式的選擇 對于每一個(gè)數(shù)據(jù)源中的字段,我們需要選擇一個(gè)合適的索引方式, 需要設(shè)置這個(gè)字段是否需要索引,是否需要儲存,是否需要分詞。 索引的 管理 索引的管理 包括文件的增加,刪除和修改,也包括索引的重建,索引的階段修復(fù)。 索引管理工具 索引的管理工具是用來維護(hù)最近數(shù)據(jù)的,需要對文件索引進(jìn)行批量刪除,或者 需要修改文件, 或者需要添加文件, 或者是重建當(dāng)天數(shù)據(jù),或者是重建所有 最近數(shù)據(jù),或者重建某一天之前的數(shù)據(jù)文件。 這個(gè)服務(wù)也會在每天的一點(diǎn) 啟動(dòng)索引優(yōu)化,并且通過程序設(shè)置用戶服務(wù)程序所引用的索引數(shù)據(jù)源。對于“ ”開頭的字符串,添加到 BooleanQuery 時(shí)的添加條件為 MUST_NOT,也就是“非”;對于以“ (”開頭,以“ )”結(jié)尾的字符串,添加到 BooleanQuery 時(shí)的添加條件為 SHOULD,也就是“或”;其余字符串,添加到 BooleanQuery 時(shí)的添加條件為 MUST,也就是“與”。 翻頁的實(shí)現(xiàn) 翻頁是按照每頁 10 篇文章,每次取 10 篇文章來顯示的方式。采用log4技術(shù),可以輸出各種級別的錯(cuò)誤日志。 5 分鐘內(nèi)完成 50篇的數(shù)據(jù)創(chuàng)建也綽綽有余。 系統(tǒng)運(yùn)行穩(wěn)定, 索引定時(shí)更新服務(wù)和用戶搜索 服務(wù)器未曾出現(xiàn)死掉的狀況。通過這些的學(xué)習(xí),自己所做的臟字過濾工具,關(guān)鍵詞提取工具,文章自動(dòng)分類工具都 有很好的效果。 再次要感謝我的父母,是他們在我剛搬出學(xué)校居住時(shí)給與我關(guān)心和愛護(hù)??墒窃谶M(jìn)入公司不久之后,公司便把一個(gè)對外開放的整個(gè)的系統(tǒng)交給我來做,對我來說這份信任是不可想象的。但是這個(gè)搜索引擎還有很多不足,第一就是功能太簡單,由于公司沒有這方面的需求,也不提供進(jìn)行這方面需求實(shí)現(xiàn)的數(shù)據(jù)。 搜索準(zhǔn)確度測試 在一篇文章中任意截取一個(gè)文字片段進(jìn)行搜索,都能搜索到該篇文章 ,說明很準(zhǔn)確。 用戶搜索服務(wù)系統(tǒng)是每天生成一個(gè)文件,對于每個(gè)錯(cuò)誤級別以上的情況生成一條記錄。 現(xiàn)在每頁顯示的是 10條數(shù)據(jù),那么當(dāng)需要獲取 “ 第 N頁 ” 的信息時(shí),只需要取出 Hits中 10*(N1)到 10*N之間的數(shù)據(jù)。 Filter雖然在原理上與 RangeQuery相當(dāng),但是在效率上會快一些。 另外,我定義了一個(gè)高級搜索頁面。 這個(gè)服務(wù)每 5分鐘便檢查一下存放當(dāng)天數(shù)據(jù)的文件夾中是否有新的數(shù)據(jù)。 歷史數(shù)據(jù)索引生成輔助工具 這個(gè)索引工具是為了單獨(dú) 刪除 一個(gè)歷史數(shù)據(jù)文件而建 立的。 索引的建立與 優(yōu)化 萬事俱備之后便可以建立索引, 索引建立好了之后便需要對索引進(jìn)行優(yōu)化。 這樣便可以維持時(shí)間靠前的新聞先索引的原則。 Html標(biāo)簽對于文章中的文字信息沒有什么關(guān)系,也直接用正則表達(dá)式去除。這樣就要求我們先創(chuàng)建時(shí)間久遠(yuǎn)的文章,而后創(chuàng)建時(shí)間靠近現(xiàn)在的文章。 索引的創(chuàng)建 數(shù)據(jù)源的處理 新聞 數(shù)據(jù)中需要呈現(xiàn)給用戶的有以下幾個(gè)字段,文章的標(biāo)題,文章的內(nèi)容,文章的網(wǎng)址鏈接,文章的創(chuàng)建時(shí)間,文件的發(fā)布媒體。 要實(shí)現(xiàn)智能化,首先需要模擬人在真實(shí)網(wǎng)絡(luò)中的位置與思考方式,我們既然可以想象一個(gè)蜘蛛去收集資源,那么我們也可以想象一個(gè)小白鼠去尋找奶酪。專門的新聞搜索,專門的視頻搜索,各個(gè)公司集中資金投向一個(gè)特有領(lǐng)域還是最現(xiàn)實(shí)的。 Lucene中 “ IDF” 這個(gè)值能夠很好的區(qū)分常用詞,但是對于專有詞的 區(qū)分卻完全沒體現(xiàn)。 Lucene 相關(guān)性排序 文檔的得分公式為: 總的來說 Lucene使用了 TF, IDF作 為基礎(chǔ)因子,長度因素作為輔助因子,并自行添加了一個(gè)域調(diào)節(jié)因子。整個(gè)排序的過程是結(jié)合在搜索過程中的。但是在使用 RangeFilter 之前,就已經(jīng)遍歷過一次索引了,那么這會影響查詢的效率。經(jīng)歷了幾年的運(yùn)行,Google 采用了好網(wǎng)站鏈接的方式在修改它的排序算法。篩選比較好理解,就是對于一些不需要或者不應(yīng)該出現(xiàn)的結(jié)果進(jìn)行過濾。包含 And、 Or、 Not的字符串會自動(dòng)按照其表示的正則表達(dá)式規(guī)則處理。通過這個(gè)便可以進(jìn)行多個(gè)短語的搜索。 基于 Lucene 的站內(nèi)新聞搜索引擎的設(shè)計(jì)與實(shí)現(xiàn) 第 7 頁 共 20 頁 只需要在添加的時(shí)候指定這個(gè)值是必須出現(xiàn),必須不出現(xiàn)還是應(yīng)該出現(xiàn)。 (2) 初始化 Query 通過 QueryParse把 字詞轉(zhuǎn)化成一個(gè) Query。 搜索結(jié)果的過濾是非常必要的,搜索結(jié)果包含敏感詞 ,用戶給出需求想要限制搜索結(jié)果的范圍,這些情況下都需要對搜索的結(jié)果進(jìn)行過濾。 索引的同步則依靠 和 來實(shí)現(xiàn)。 把 Document信息寫人緩存,然后生成 Segment、 .fnm、 .fdt、 .fdx、 .tis、 .tii、Deletable文件,最后合并為 Segment、 .cfs、 Deletable三個(gè)索引文件。 (6) .tii 標(biāo)明了每個(gè) .tis文件中詞條的位置。一個(gè) Document由多個(gè) Field組成。 缺點(diǎn)就是其內(nèi)置的詞典太過混亂,需要人工修改,并且分詞準(zhǔn)確性不如中科院分詞。另一個(gè)特點(diǎn)便是他的人名,地名識別系統(tǒng)。例如我馬上到,我從馬上下來。一種最簡單的建立索引的方式就是把字詞和一篇文章中出現(xiàn)過這個(gè)字 詞的文檔的編號存在一起。 索引的建立主要涉及一下幾個(gè)問題,什么樣的數(shù)據(jù)要建立索引?以怎樣的方式建立索引? 什么樣的數(shù)據(jù)需要建立索引呢?這就要分析用戶需求了。然后逐漸被翻譯成了多種語言,如 C++、 C、Perl等。 先如今,搜索引擎蓬勃發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)量與日俱增, Soso, Bing, Sogou, Iask, Baidu等搜索引擎的日益發(fā)展壯大。那時(shí)候互聯(lián)網(wǎng)的數(shù)據(jù)量還不算太大, Yahoo的編輯們每天把各種各樣的網(wǎng)站添加到自己的分類目錄中,而網(wǎng)站站長也主動(dòng)的把自己的網(wǎng)站的更新信息發(fā)布給 Yahoo。 當(dāng)時(shí)大量的文件散播在各個(gè) FTP 主機(jī)中,人們得到一個(gè)資源往往要花費(fèi)很多時(shí)間。本文詳細(xì)介紹了自己編寫的一款在 上開發(fā)的基于 Lucene的新聞搜索引擎 ,并且通過對實(shí)際項(xiàng)目的介紹,闡明了 Lucene實(shí)現(xiàn)的關(guān)鍵和優(yōu)缺點(diǎn),同時(shí)還提供了一些與 Lucene無關(guān)的環(huán)節(jié)的實(shí)現(xiàn)思路。 目前版本的 Lucene包括 基于 JavaCC 的標(biāo)準(zhǔn)分詞 類 ,建立索引相關(guān)類,搜索索引相關(guān)類,文檔排序和相關(guān)性計(jì)算相關(guān)類等。而要在這浩瀚的互聯(lián)網(wǎng)世界中尋找自己想要的東西,那就離不開搜索。世界上的第一個(gè)網(wǎng)絡(luò)爬蟲是 Matthew Gray開發(fā)的 World wide web wander。這是一種以網(wǎng)絡(luò)爬蟲, PageRank 為標(biāo)志的搜索引擎。 2020年 3月 Doug Cutting把 Lucene轉(zhuǎn)移到 SourceFe上, 2020年 10月獻(xiàn)給 Apache基金會。 基于 Lucene 的站內(nèi)新聞搜索引擎的設(shè)計(jì)與實(shí)現(xiàn) 第 3 頁 共 20 頁 第二章 索引的建立 概述 我們首先已經(jīng)事先建立好了數(shù)據(jù)源,那么對于建立搜索引擎而言,第二步就是建立索引。把這里邊的內(nèi)容拆成一個(gè)個(gè)的字詞,這些字詞就是我們要進(jìn)行索引的數(shù)據(jù)。 舉一個(gè)例子: 文本 T0=“我愛中華人民共和國” 文本 T1=“我愛中國” 文本 T2=“中華人民共和國很偉大” 那么反向文件索引為: “我”: 0, 1 “愛”: 0, 1 “中華 人民共和國”: 0, 2 “中國”: 1 “很”: 2 “偉大”: 2 這樣搜索“我”“中國”的結(jié)果就是 {0,1}∧ {1}={1} 基于 Lucene 的站內(nèi)新聞搜索引擎的設(shè)計(jì)與實(shí)現(xiàn) 第 4 頁 共 20 頁 中文分詞 中文分詞是索引建立的關(guān)鍵。但是按字分詞往往使得索引過大,并且用戶往往都是直接輸入連在一起的漢字,這樣便使得,按字拆分的方法不能很好的猜測用戶的意思。這個(gè)分詞的缺點(diǎn)是有很多分詞不準(zhǔn),優(yōu)點(diǎn)是分詞速度很快。 Lucene 索引的建立 Lucene 索引相關(guān)類介紹 (1) Document Lucene 中的邏輯文件,每一個(gè)或多個(gè)物理文件與一個(gè)邏輯文件相對應(yīng)。 (3) .fdt 用于儲存 具有 Field數(shù)據(jù)。 (2) 生成 Document。把多個(gè) Segment和 Deletable進(jìn)行了合并。 就目前而言,用戶查看的往往只是搜索結(jié)果的前幾條。 (3) Hits 儲存搜索結(jié)果的類型。通過
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1