搜索引擎的設計與實現(二)

目錄

3 搜索引擎的基本原理

3.1搜索引擎的基本組成及其功能

??l.搜索器 (Crawler)

?????2.索引器(Indexer)

?3.檢索器(Searcher)

4.用戶接口(UserInterface)

3.2搜索引擎的詳細工作流程??

4 系統分析與設計

4.1系統分析

4.2系統概要設計

4.2系統實現目標


前面內容請移步

搜索引擎的設計與實現(一)

免費源代碼&畢業設計論文

搜索引擎的設計與實現

3 搜索引擎的基本原理

3.1搜索引擎的基本組成及其功能

圖3-1 搜索引擎的基本組成

????由上圖可知,搜索引擎程序可以化分為搜索器子程序、索引器子程序、檢索器子程序以及用戶接口子程序模塊;存儲器以及存儲桶是用來存儲所檢索到的各種資源的

??搜索引擎程序的組成結構具體如下:

??l.搜索器 (Crawler)

????????搜索器,顧名思義,就用于在互聯網中探索、尋找信息,最終的目的是為了把信息存儲在存儲單元中的這種計算機程序,需要日夜不停地處于運行的狀態,為的是可以盡可能的更快地搜集更多的新信息,這些信息的種類是多種多樣的,包括HTML格式、XML格式、字處理文檔格式以及多媒體信息等等,此外搜索引擎還需要定期更新存儲器里的信息

?搜索器

即蜘蛛((Spider)程序,它無時無刻不在運行,主要任務是從因特網上搜集各種的信息資源然后通過壓縮處理等手段使其占用空間變小,最終存儲庫為日候的用戶檢索做準備

索引器

存儲庫里的信息提取出來,進行識別與分析根據結果進行分類,然后再建立索引,并進行簡單的排隊結果放在恰當的硬件存儲單元里,也就是上文提到的存儲桶

檢索器

當用戶進行查詢檢索器會通過判斷用戶輸入的請求,在存儲桶中進行查找,將查到的結果,根據匹配度、優先度等指標進行最終的排序呈現給用戶最好的結果

用戶接口

是用戶與搜索引擎進行人機交互的界面,既可以用于輸入用戶的請求,也可以用來返回查找的結果,供用戶選擇。

????????如今,互聯網已經進入了尋常百姓的家中,人們可以自由的發布信息,導致信息更新很快,只有定時的更新網絡上的信息,才能避免使用者搜索信息時的死連接或者是無效連接。現在我們考慮的搜集信息的策略兩種

表3-2?搜集信息的策略

????????為了提高信息發現以及信息的速度?搜索器的實現方法通常會采用分布式、并行計算技術,這樣就可以滿足商業搜索引擎每天幾百萬網頁的信息發現

?????2.索引器(Indexer)

?????索引器,通過閱讀所搜集的信息,并進行整理,將信息中的索引項生成索引表,同時還可以用索引項表示文檔。索引項客觀索引項以及內容索引項之分:

?表3-3 索引項的分類

????????為了對文檔的內容進行區分,通常會給單索引項值,這樣就可以用單索引項進行區分了,而且還可以用來得出查詢結果與查詢目標的相關度。一般使用的方法有:統計學方法、概率學方以及信息論法。短語索引項的提取,一般會采用統計學的方或者是概率學的方甚至是語言學的方法。

????????索引表,一般會采用由索引項查找相應文檔的內容,這就是所謂的倒排表 (InversionList)。當然,索引表還會把索引項在文檔中出現的位置也記錄在表目的是為了計算索引項之間的關系,究竟是相鄰還是接近

????????索引器的算法有兩種:集中式分布式,每一種算法都有優點,但也都有其缺點。搜索的數據量為了解決跟上信息量上升迅速的難題,必須采取即時索引 (InstantIndexing)的方式一個漂亮的索引算法,隨著索引器的搜索的數據的提升,其性能的優越性就會展露無遺。索引的質量的高低,有時就會完全決定搜索引擎有效性

?3.檢索器(Searcher)

????????依照用戶的查詢請求,搜索索引庫快速所需的文檔,然后比較所查到的文檔查詢請求之間的相關度評價。最終,根據相關度的高低,將輸出的查詢結果進行由高到低的排序,還可以實現用戶相關性與搜索引擎之間的反饋機制。

????????檢索器的設計,目前已有四種成熟的模型:

????????????????混合的模型代數模型、以及概率模型集合理論模型。

4.用戶接口(UserInterface)

????????搜索引擎,目的是為了讓用戶進行檢索信息,所以必須有用戶接口,這樣才能實現人機交互,從而才能真正的體現搜索引擎的價值。用戶接口就是用來進行,將用戶查詢請求輸入搜索引擎、顯示用戶的查詢結果、更高級的可以提供用戶相關性反饋機制,從而更好地實現搜索引擎,其所提供的信息的準確性、合理性等等有了用戶接口,不僅方便用戶使用搜索引擎,而且使得用戶可以更加的高效率、多方式地得到及時的信息。

????用戶輸入接口我們可以分為兩類,一種是簡單接口,另外一種就是與之對應的復雜接口。

????????簡單接口,就是最為平常的一種交互界面,使用者只能夠輸入查詢信息,不能進行更加精確地查詢,而且也沒有反饋的功能;

????????復雜接口,不僅可以提供輸入查詢信息的文本框,而且使用者還可以對查詢得信息進行限制,減小搜索空間,使用邏輯運算符使用相近相鄰關系域名范圍(如.cn、.com)出現位置 (如題目關鍵字、作者、時間)、搜索文檔的字數等等。中國知網、萬方數據庫等等,都可以提供上述限制,由于不同的公司所用的限制方式不同,會給用戶的使用帶來一些不便,當前就有一些公司機構正在著手制定查詢選項的一系列標準

3.2搜索引擎的詳細工作流程??

????搜索引擎的詳細軟件內部構成和具體工作流程說明如下:

?

圖 3-2?搜索引擎的內部構件

????????搜索引擎的工作原理:當我們在一個表單中輸入要搜索的內容時,搜索引擎就會根據我們輸入的內容在數據庫中進行搜索,首先他會匹配各個網頁中的頭部信息中的關鍵字,如果這個網站中有這個關鍵字的話,就會匹配出來;如果沒有的話,搜索引擎就會自動過濾掉。簡單直白的說,搜索引擎的工作原理就是對已存在的一個大型數據庫內的信息資源進行智能化的篩選過程,并將有效的結果反饋給用戶。

????????在這一個過程中無論是誰家的搜索引擎,無論是百度還是谷歌還是雅虎都會采用自己的算法根據一些指標來進行判斷,然后暗戰關聯度。高低從高到低排序。在這一過程中,需要我們在做網站的時候頭部關鍵字部分還有超鏈接部分
還有在做完網站之后會引入一個文件以便收錄,結合一些SEO技術,一個成功的網站是會在排名前五,而且通過一些合理的頁面布局,利用不同的工具,還有超鏈接的設置要合理,避免垃圾鏈接無用鏈接。通過讓搜索引擎爬你的網站,從而增加網站的流量,為各大站長帶來收益。

????????我們通常會用好多指令查看某一個網站的瀏覽人數,但是對于每一個搜索引擎又各有各的算法,在百度適用的不一定在谷歌適用。典型的我們會通過查看看site://www.xxx.com 類型的網站,來了解某一個網站的瀏覽人數。

?

4 系統分析與設計

4.1系統分析

????????經過對搜索引擎的研究同時與Lucene自身的特性相結合,將本次設計所需要實現的功能闡述如下:

  • 支持桌面文件搜索,格式包括txt、doc、xls和ppt;
  • 支持分詞查詢
  • 支持全文搜索
  • 能夠高亮顯示搜索關鍵字
  • 顯示查詢所用的時間
  • 顯示搜索歷史、過濾關鍵字

????????分詞查詢與全文搜索這兩項功能,我們都可以利用Lucene本身自帶的庫加上相關算法就可以完成設計了,為了使得關鍵字的高亮度這一問題得到解決,顯然,我們需要利用Highlighter的輔助,通過數據庫持久化保存數據。

4.2系統概要設計

????????在我們進行需求分析的時候,制定的用例以及領域模型都可以直接的帶入到設計階段,我們粗略設計的搜索引擎系統的構架如下:

圖4-1?系統總體架構

4.2系統實現目標

????????希望實現一個可用于海量信息快速搜索的個性化引擎,它應該具有快速、便捷和精確等特性,并且能夠一目了然而看到搜索耗時,關鍵字高亮度顯示等等個性化效果。實現時希望不需要高配置的硬件資源以及復雜的環境配置或搭建,幸運的是開源Lucene庫給我們提供了可能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11580.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11580.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11580.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rust 語言不支持 goto 語句

一、Rust 不提供 goto 語句 Rust 語言并沒有提供 goto 語句。goto 語句在很多現代編程語言中已經不再被推薦使用,因為它可能導致代碼的流程變得難以跟蹤和理解,特別是在復雜的程序中。Rust 語言設計者選擇了更加結構化和可預測的控制流語句,…

關于C++多態的復習總結

多態 簡介: 面向對象的三大特性之一,多態顧名思義即具有多種形態,即去執行某個行為時,當不同的對象去執行時會產生不同的狀態 構成多態的條件 條件一 必須通過基類(父類)的指針或者引用調用虛函數(函數…

寧夏銀川市起名專家的老師顏廷利:死神(死亡)并不可怕,可怕的是...

在中國優秀傳統文化之中,漢語‘巳’字與‘四’同音,在阿拉伯數字里面,通常用‘4’來表示; 湖南長沙、四川成都、重慶、寧夏銀川最靠譜最厲害的起名大師的老師顏廷利教授指出,作為漢語‘九’字,倘若是換一個…

FreeRTOS中斷管理

FreeRTOS中斷管理 基于STM32_stm32 freertos 按鍵中斷-CSDN博客 更加詳情請看以上鏈接↑ 中斷優先級 任何中斷的優先級都大于任務! 在我們的操作系統,中斷同樣是具有優先級的,并且我們也可以設置它的優先級,但是他的優先 級并不是從 0~15 ,默認情況下它是從 5~15 ,…

[ACTF新生賽2020]SoulLike

沒見過的錯誤: ida /ctg目錄下的hexrays.cfg文件中的MAX_FUNCSIZE64 改為 MAX_FUNCSIZE1024 然后就是一堆數據 反正就是12個字符 from pwn import * flag"actf{" k0 for n in range(12):for i in range(33,127):pprocess("./SoulLike")_flag…

94.二叉樹的中序遍歷

刷算法題: 第一遍:1.看5分鐘,沒思路看題解 2.通過題解改進自己的解法,并且要寫每行的注釋以及自己的思路。 3.思考自己做到了題解的哪一步,下次怎么才能做對(總結方法) 4.整理到自己的自媒體平臺。 5.再刷重復的類…

Python爬蟲入門:網絡世界的寶藏獵人

今天阿佑將帶你踏上Python的肩膀,成為一名網絡世界的寶藏獵人! 文章目錄 1. 引言1.1 簡述Python在爬蟲領域的地位1.2 闡明學習網絡基礎對爬蟲的重要性 2. 背景介紹2.1 Python語言的流行與適用場景2.2 網絡通信基礎概念及其在數據抓取中的角色 3. Python基…

今日總結2024/5/13

今日學習了01背包求具體方案的方法 Acwing.12 背包問題求具體方案 由于背包是從小到大枚舉物品,只能從后往前判斷是從哪個狀態遞推過來的,而該題要求按字典序順序輸出字典序最小的最優方案 因此要將物品從大到小枚舉,判斷時從小到大判斷是…

在Windows上有哪些好用的網絡抓包工具?

2024年5月12日,周日上午 在Windows上,有多種好用的網絡抓包工具,以下是一些常見的選項: Wireshark: Wireshark 是一款功能強大的網絡協議分析工具,它可以捕獲并分析計算機網絡上的數據包。它支持廣泛的協議…

ssm+vue的公務用車管理智慧云服務監管平臺查詢統計(有報告)。Javaee項目,ssm vue前后端分離項目

演示視頻: ssmvue的公務用車管理智慧云服務監管平臺查詢統計(有報告)。Javaee項目,ssm vue前后端分離項目 項目介紹: 采用M(model)V(view)C(controller&…

求階乘n!末尾0的個數溢出了怎么辦

小林最近遇到一個問題:“對于任意給定的一個正整數n,統計其階乘n!的末尾中0的個數”,這個問題究竟該如何解決? 先用n5來解決這個問題。n的階乘即n!5!5*4*3*2*1120,顯然應該為2個數相乘等于10才能得到一個結…

軟件測試自動化:加速測試,提升效率

目錄 測試自動化的內涵 測試自動化的原理 測試工具的分類和選擇 自動化測試的引入 在當今的軟件開發中,測試自動化已經成為提升效率和確保軟件質量的關鍵環節。測試自動化是指使用軟件工具和腳本來執行重復的測試任務,從而減輕人工測試的負擔&#x…

量化交易包含些什么?

我們講過許多關于量化交易的內容,但是量化交易具體可以做些什么?很多朋友都還不清楚,我們詳細來探討下! 第一:什么是量化交易? 量化交易是一種利用先進的數學模型和計算機技術,從大量的歷史數…

制造業精益生產KPI和智慧供應鏈管理方案和實踐案例分享

隨著工業4.0的推進和國家對制造業高質量發展的重視,工業數據已躍升為生產經營活動中不可或缺的核心要素,同時,工業數據也是形成新質生產力的優質生產要素,助力企業實現高效精益生產。 工業數據在制造業中的作用不可忽視&#xff…

常見地圖坐標系間的轉換算法JavaScript實現

文章目錄 ?? 不同的地圖廠商使用不同的坐標系來表示地理位置。以下簡述:?? 前置常量和方法:?? BD-09轉GCJ-02(百度轉谷歌、高德)?? GCJ-02轉BD-09(谷歌、高德轉百度)?? WGS84轉GCJ-02(WGS84轉谷歌、高德)?? GCJ-02轉WGS84(谷歌、高德轉WGS84)?? BD-09轉wgs84坐…

Linux: 默認進程介紹

進程名稱介紹systemdSystemd 可以管理所有系統資源。不同的資源統稱為 Unit(單位)。 Unit 一共分成12種。 systemctl list-units命令可以查看當前系統的所有 Unitkthreaddkthreadd進程由idle通過kernel_thread創建,并始終運行在內核空間, 負責…

H5利用微信開放標簽喚起用戶手機APP

APP殼子分享網頁到微信,被分享人在微信打開網頁后,利用公眾號配置微信開放標簽[wx-open-launch-app],實現喚起APP 一、Vue2.x(2.6.11) 1. main.js // main.jsimport Vue from vue;Vue.config.ignoredElements [wx-o…

Hbase基礎操作Demo(Java版)

一、前置條件 HBase服務:【快捷部署】023_HBase(2.3.6)開發環境:Java(1.8)、Maven(3)、IDE(Idea 或 Eclipse) 二、相關代碼 代碼結構如上圖中①和② pom.x…

IO—消息隊列+管道

使用消息隊列實現的2個終端之間的互相聊天 并使用信號控制消息隊列的讀取方式: 當鍵盤按ctrlc的時候,切換消息讀取方式,一般情況為讀取指定編號的消息,按ctr1c之后,指定的編號不讀取,讀取其他所有編號的消息 wftok.c …

vue項目中使用websocke即時通訊實現系統公告實時獲取并提醒

一、使用場景 發布者設置需要發布的公告內容、公告接收用戶和發布時間,到達發布時間時及時通知提醒已登錄系統用戶,使用websocke來實現前端與服務器保持長連接,以便實時過去公告信息。 WebSocket是一種在單個TCP連接上進行全雙工通信的協議…