自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于開(kāi)源搜索引擎的架構(gòu)設(shè)計(jì)和J2EE實(shí)現(xiàn)(二)

開(kāi)發(fā) 后端
面對(duì)浩瀚的網(wǎng)絡(luò)資源,搜索引擎為所有網(wǎng)上沖浪的用戶提供了一個(gè)入口,毫不夸張的說(shuō),所有的用戶都可以從搜索出發(fā)到達(dá)自己想去的網(wǎng)上任何一個(gè)地方。因此它也成為除了電子郵件以外最多人使用的網(wǎng)上服務(wù)。

第四章 基于lucene的索引與搜索

4.1什么是Lucene全文檢索

Lucene是Jakarta Apache的開(kāi)源項(xiàng)目。它是一個(gè)用Java寫(xiě)的全文索引引擎工具包,可以方便的嵌入到各種應(yīng)用中實(shí)現(xiàn)針對(duì)應(yīng)用的全文索引/檢索功能。

4.2 Lucene的原理分析

4.2.1全文檢索的實(shí)現(xiàn)機(jī)制

Lucene的API接口設(shè)計(jì)的比較通用,輸入輸出結(jié)構(gòu)都很像數(shù)據(jù)庫(kù)的表==>記錄==>字段,所以很多傳統(tǒng)的應(yīng)用的文件、數(shù)據(jù)庫(kù)等都可以比較方便的映射到Lucene的存儲(chǔ)結(jié)構(gòu)和接口中。

總體上看:可以先把Lucene當(dāng)成一個(gè)支持全文索引的數(shù)據(jù)庫(kù)系統(tǒng)。

索引數(shù)據(jù)源:doc(field1,field2...) doc(field1,field2...)

\ indexer /

_____________

| Lucene Index|

--------------

/ searcher 結(jié)果輸出:Hits(doc(field1,field2) doc(field1...))

Document:一個(gè)需要進(jìn)行索引的“單元”,一個(gè)Document由多個(gè)字段組成

Field:字段

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

4.2.2 Lucene的索引效率

通常書(shū)籍后面常常附關(guān)鍵詞索引表(比如:北京:12, 34頁(yè),上海:3,77 頁(yè)……),它能夠幫助讀者比較快地找到相關(guān)內(nèi)容的頁(yè)碼。而數(shù)據(jù)庫(kù)索引能夠大大提高查詢的速度原理也是一樣,想像一下通過(guò)書(shū)后面的索引查找的速度要比一頁(yè)一 頁(yè)地翻內(nèi)容高多少倍……而索引之所以效率高,另外一個(gè)原因是它是排好序的。對(duì)于檢索系統(tǒng)來(lái)說(shuō)核心是一個(gè)排序問(wèn)題。

由于數(shù)據(jù)庫(kù)索引不是為全文索引設(shè)計(jì)的,因此,使用like "%keyword%"時(shí),數(shù)據(jù)庫(kù)索引是不起作用的,在使用like查詢時(shí),搜索過(guò)程又變成類似于一頁(yè)頁(yè)翻書(shū)的遍歷過(guò)程了,所以對(duì)于含有模糊查詢的數(shù)據(jù)庫(kù) 服務(wù)來(lái)說(shuō),LIKE對(duì)性能的危害是極大的。如果是需要對(duì)多個(gè)關(guān)鍵詞進(jìn)行模糊匹配:like"%keyword1%" and like "%keyword2%" ...其效率也就可想而知了。所以建立一個(gè)高效檢索系統(tǒng)的關(guān)鍵是建立一個(gè)類似于科技索引一樣的反向索引機(jī)制,將數(shù)據(jù)源(比如多篇文章)排序順序存儲(chǔ)的同 時(shí),有另外一個(gè)排好序的關(guān)鍵詞列表,用于存儲(chǔ)關(guān)鍵詞==>文章映射關(guān)系,利用這樣的映射關(guān)系索引:[關(guān)鍵詞==>出現(xiàn)關(guān)鍵詞的文章編號(hào),出現(xiàn) 次數(shù)(甚至包括位置:起始偏移量,結(jié)束偏移量),出現(xiàn)頻率],檢索過(guò)程就是把模糊查詢變成多個(gè)可以利用索引的精確查詢的邏輯組合的過(guò)程。從而大大提高了多 關(guān)鍵詞查詢的效率,所以,全文檢索問(wèn)題歸結(jié)到***是一個(gè)排序問(wèn)題。

由此可以看出模糊查詢相對(duì)數(shù)據(jù)庫(kù)的精確查詢是一個(gè)非常不確定的問(wèn)題,這也是大部分?jǐn)?shù)據(jù)庫(kù)對(duì)全文檢索支持有限的原因。Lucene最核心的特征是通過(guò)特殊的索引結(jié)構(gòu)實(shí)現(xiàn)了傳統(tǒng)數(shù)據(jù)庫(kù)不擅長(zhǎng)的全文索引機(jī)制,并提供了擴(kuò)展接口,以方便針對(duì)不同應(yīng)用的定制。

可以通過(guò)一下表格對(duì)比一下數(shù)據(jù)庫(kù)的模糊查詢:

  Lucene全文索引引擎 數(shù)據(jù)庫(kù)

索引 將數(shù)據(jù)源中的數(shù)據(jù)都通過(guò)全文索引一一建立反向索引 對(duì)于LIKE查詢來(lái)說(shuō),數(shù)據(jù)傳統(tǒng)的索引是根本用不上的。數(shù)據(jù)需要逐個(gè)便利記錄進(jìn)行GREP式的模糊匹配,比有索引的搜索速度要有多個(gè)數(shù)量級(jí)的下降。

匹配效果 通過(guò)詞元(term)進(jìn)行匹配,通過(guò)語(yǔ)言分析接口的實(shí)現(xiàn),可以實(shí)現(xiàn)對(duì)中文等非英語(yǔ)的支持。 使用:like "%net%" 會(huì)把netherlands也匹配出來(lái),

多個(gè)關(guān)鍵詞的模糊匹配:使用like "%com%net%":就不能匹配詞序顛倒的xxx.net..xxx.com

匹配度 有匹配度算法,將匹配程度(相似度)比較高的結(jié)果排在前面。 沒(méi)有匹配程度的控制:比如有記錄中net出現(xiàn)5詞和出現(xiàn)1次的,結(jié)果是一樣的。

結(jié)果輸出 通過(guò)特別的算法,將最匹配度***的頭100條結(jié)果輸出,結(jié)果集是緩沖式的小批量讀取的。 返回所有的結(jié)果集,在匹配條目非常多的時(shí)候(比如上萬(wàn)條)需要大量的內(nèi)存存放這些臨時(shí)結(jié)果集。

可定制性 通過(guò)不同的語(yǔ)言分析接口實(shí)現(xiàn),可以方便的定制出符合應(yīng)用需要的索引規(guī)則(包括對(duì)中文的支持) 沒(méi)有接口或接口復(fù)雜,無(wú)法定制

結(jié)論 高負(fù)載的模糊查詢應(yīng)用,需要負(fù)責(zé)的模糊查詢的規(guī)則,索引的資料量比較大 使用率低,模糊匹配規(guī)則簡(jiǎn)單或者需要模糊查詢的資料量少

4.2.3 中文切分詞機(jī)制

對(duì)于中文來(lái)說(shuō),全文索引首先還要解決一個(gè)語(yǔ)言分析的問(wèn)題,對(duì)于英文來(lái)說(shuō),語(yǔ)句中單詞之間是天然通過(guò)空格分開(kāi)的,但亞洲語(yǔ)言的中日韓文語(yǔ)句中的字是一個(gè)字挨一個(gè),所有,首先要把語(yǔ)句中按“詞”進(jìn)行索引的話,這個(gè)詞如何切分出來(lái)就是一個(gè)很大的問(wèn)題。

首先,肯定不能用單個(gè)字符作(si-gram)為索引單元,否則查“上?!睍r(shí),不能讓含有“海上”也匹配。但一句話:“北京天安門(mén)”,計(jì)算機(jī)如何按照中文的語(yǔ)言習(xí)慣進(jìn)行切分呢?“北京 天安門(mén)” 還是“北 京 天安門(mén)”?讓計(jì)算機(jī)能夠按照語(yǔ)言習(xí)慣進(jìn)行切分,往往需要機(jī)器有一個(gè)比較豐富的詞庫(kù)才能夠比較準(zhǔn)確的識(shí)別出語(yǔ)句中的單詞。另外一個(gè)解決的辦法是采用自動(dòng)切分算法:將單詞按照2元語(yǔ)法(bigram)方式切分出來(lái),比如:"北京天安門(mén)" ==> "北京 京天 天安 安門(mén)"。這樣,在查詢的時(shí)候,無(wú)論是查詢"北京" 還是查詢"天安門(mén)",將查詢?cè)~組按同樣的規(guī)則進(jìn)行切分:"北京","天安安門(mén)",多個(gè)關(guān)鍵詞之間按與"and"的關(guān)系組合,同樣能夠正確地映射到相應(yīng)的索引中。這種方式對(duì)于其他亞洲語(yǔ)言:韓文,日文都是通用的。

基于自動(dòng)切分的***優(yōu)點(diǎn)是沒(méi)有詞表維護(hù)成本,實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)是索引效率低,但對(duì)于中小型應(yīng)用來(lái)說(shuō),基于2元語(yǔ)法的切分還是夠用的?;?元切分后的索引一般大小和源文件差不多,而對(duì)于英文,索引文件一般只有原文件的30%-40%不同,

自動(dòng)切分 詞表切分

實(shí)現(xiàn) 實(shí)現(xiàn)非常簡(jiǎn)單 實(shí)現(xiàn)復(fù)雜

查詢 增加了查詢分析的復(fù)雜程度, 適于實(shí)現(xiàn)比較復(fù)雜的查詢語(yǔ)法規(guī)則

存儲(chǔ)效率 索引冗余大,索引幾乎和原文一樣大 索引效率高,為原文大小的30%左右

維護(hù)成本 無(wú)詞表維護(hù)成本 詞表維護(hù)成本非常高:中日韓等語(yǔ)言需要分別維護(hù)。

還需要包括詞頻統(tǒng)計(jì)等內(nèi)容

適用領(lǐng)域 嵌入式系統(tǒng):運(yùn)行環(huán)境資源有限

分布式系統(tǒng):無(wú)詞表同步問(wèn)題

多語(yǔ)言環(huán)境:無(wú)詞表維護(hù)成本 對(duì)查詢和存儲(chǔ)效率要求高的專業(yè)搜索引擎

4.3 Lucene與Spider的結(jié)合

首先構(gòu)造一個(gè)Index類用來(lái)實(shí)現(xiàn)對(duì)內(nèi)容進(jìn)行索引。

代碼分析如下:

  1. package news;   
  2. /**   
  3. * 新聞搜索引擎   
  4. * 計(jì)算機(jī)99630 沈晨   
  5. * 版本1.0   
  6. */   
  7. import java.io.IOException;   
  8. import org.apache.lucene.analysis.cn.ChineseAnalyzer;   
  9. import org.apache.lucene.document.Document;   
  10. import org.apache.lucene.document.Field;   
  11. import org.apache.lucene.index.IndexWriter;   
  12. public class Index {   
  13. IndexWriter _writer = null;   
  14. Index() throws Exception {   
  15. _writer = new IndexWriter("c:\\News\\index",   
  16. new ChineseAnalyzer(), true);   
  17. }   
  18. /**   
  19. * 把每條新聞加入索引中   
  20. * @param url 新聞的url   
  21. * @param title 新聞的標(biāo)題   
  22. * @throws java.lang.Exception   
  23. */   
  24. void AddNews(String url, String title) throws Exception {   
  25. Document _doc = new Document();   
  26. _doc.add(Field.Text("title", title));   
  27. _doc.add(Field.UnIndexed("url", url));   
  28. _writer.addDocument(_doc);   
  29. }   
  30. /**   
  31. * 優(yōu)化并且清理資源   
  32. * @throws java.lang.Exception   
  33. */   
  34. void close() throws Exception {   
  35. _writer.optimize();   
  36. _writer.close();   
  37. }   
  38. }   

然后構(gòu)造一個(gè)HTML解析類,把通過(guò)bot程序收集的新聞內(nèi)容進(jìn)行索引。

代碼分析如下:

  1. package news;   
  2. /**   
  3. * 新聞搜索引擎   
  4. * 計(jì)算機(jī)99630 沈晨   
  5. * 版本1.0   
  6. */   
  7. import java.util.Iterator;   
  8. import java.util.Vector;   
  9. import com.heaton.bot.HTMLPage;   
  10. import com.heaton.bot.HTTP;   
  11. import com.heaton.bot.Link;   
  12. public class HTMLParse {   
  13. HTTP _http = null;   
  14. public HTMLParse(HTTP http) {   
  15. _http = http;   
  16. }   
  17. /**   
  18. * 對(duì)Web頁(yè)面進(jìn)行解析后建立索引   
  19. */   
  20. public void start() {   
  21. try {   
  22. HTMLPage _page = new HTMLPage(_http);   
  23. _page.open(_http.getURL(), null);   
  24. Vector _links = _page.getLinks();   
  25. Index _index = new Index();   
  26. Iterator _it = _links.iterator();   
  27. int n = 0;   
  28. while (_it.hasNext()) {   
  29. Link _link = (Link) _it.next();   
  30. String _herf = input(_link.getHREF().trim());   
  31. String _title = input(_link.getPrompt().trim());   
  32. _index.AddNews(_herf, _title);   
  33. n++;   
  34. }   
  35. System.out.println("共掃描到" + n + "條新聞");   
  36. _index.close();   
  37. }   
  38. catch (Exception ex) {   
  39. System.out.println(ex);   
  40. }   
  41. }   
  42. /**   
  43. * 解決java中的中文問(wèn)題   
  44. * @param str 輸入的中文   
  45. * @return 經(jīng)過(guò)解碼的中文   
  46. */   
  47. public static String input(String str) {   
  48. String temp = null;   
  49. if (str != null) {   
  50. try {   
  51. temp = new String(str.getBytes("ISO8859_1"));   
  52. }   
  53. catch (Exception e) {   
  54. }   
  55. }   
  56. return temp;   
  57. }   
  58. }   

4.4小節(jié)

在進(jìn)行海量數(shù)據(jù)搜索時(shí),如果使用單純的數(shù)據(jù)庫(kù)技術(shù),那將是非常痛苦的。速度將是極大的瓶頸。所以本章提出了使用全文搜索引擎Lucene進(jìn)行索引、搜索。

***,還結(jié)合了具體代碼說(shuō)明了如何把Lucene全文搜索引擎和Spider程序互相集合來(lái)實(shí)現(xiàn)新聞搜索的功能。

第五章 基于Tomcat的Web服務(wù)器

5.1什么是基于Tomcat的Web服務(wù)器

Web服務(wù)器是在網(wǎng)絡(luò)中為實(shí)現(xiàn)信息發(fā)布、資料查詢、數(shù)據(jù)處理等諸多應(yīng)用搭建基本平臺(tái)的服務(wù)器。Web服務(wù)器如何工作:在Web頁(yè)面處理中大致可分為三個(gè)步 驟,***步,Web瀏覽器向一個(gè)特定的服務(wù)器發(fā)出Web頁(yè)面請(qǐng)求;第二步,Web服務(wù)器接收到Web頁(yè)面請(qǐng)求后,尋找所請(qǐng)求的Web頁(yè)面,并將所請(qǐng)求的 Web頁(yè)面?zhèn)魉徒oWeb瀏覽器;第三步,Web服務(wù)器接收到所請(qǐng)求的Web頁(yè)面,并將它顯示出來(lái)。

Tomcat是一個(gè)開(kāi)放源代碼、運(yùn)行servlet和JSP Web應(yīng)用軟件的基于Java的Web應(yīng)用軟件容器。Tomcat由Apache-Jakarta子項(xiàng)目支持并由來(lái)自開(kāi)放性源代碼Java社區(qū)的志愿者進(jìn)行維護(hù)。Tomcat Server是根據(jù)servlet和JSP規(guī)范進(jìn)行執(zhí)行的,因此我們就可以說(shuō)Tomcat Server也實(shí)行了Apache-Jakarta規(guī)范且比絕大多數(shù)商業(yè)應(yīng)用軟件服務(wù)器要好。

5.2用戶接口設(shè)計(jì)

5.3.1客戶端設(shè)計(jì)

一個(gè)良好的查詢界面非常重要,例如Googl就以她簡(jiǎn)潔的查詢界面而聞名。我在設(shè)計(jì)的時(shí)候也充分考慮了實(shí)用性和簡(jiǎn)潔性。

5.3.2服務(wù)端設(shè)計(jì)

主要利用JavaTM Servlet技術(shù)實(shí)現(xiàn),用戶通過(guò)GET方法從客戶端向服務(wù)端提交查詢條件,服務(wù)端通過(guò)Tomcat的Servlet容器接受并分析提交參數(shù),再調(diào)用lucene的開(kāi)發(fā)包進(jìn)行搜索操作。***把搜索的結(jié)果以HTTP消息包的形式發(fā)送至客戶端,從而完成一次搜索操作。

服務(wù)端Servlet程序的結(jié)構(gòu)如下:

實(shí)現(xiàn)的關(guān)鍵代碼如下:

  1. public void Search(String qc, PrintWriter out) throws Exception {   
  2. // 從索引目錄創(chuàng)建索引   
  3. IndexSearcher _searcher = new IndexSearcher("c:\\news\\index");   
  4. // 創(chuàng)建標(biāo)準(zhǔn)分析器   
  5. Analyzer analyzer = new ChineseAnalyzer();   
  6. // 查詢條件   
  7. String line = qc;   
  8. // Query是一個(gè)抽象類   
  9. Query query = QueryParser.parse(line, "title", analyzer);   
  10. out.println("< html>");   
  11. out.println("< head>< title>搜索結(jié)果< /title>< /head>");   
  12. out.println("< body bgcolor=#ffffff>");   
  13. out.println("< center>" +   
  14. "< form action='/NewsServer/results' method='get'>" +   
  15. "< font face='華文中宋' color='#3399FF'>新聞搜索引擎< /font>:" +   
  16. "< input type='text' name='QueryContent' size='20'>" +   
  17. "< input type='submit' name='submit' value='開(kāi)始搜索'>" +   
  18. "< /form>< /center>"   
  19. );   
  20. out.println("< p>搜索關(guān)鍵字:< font color=red>" + query.toString("title") +   
  21. "< /font>< /p>");   
  22. Hits hits = _searcher.search(query);   
  23. out.println(" 總共找到< font color=red>" + hits.length() +   
  24. "< /font>條新聞< br>");   
  25. final int HITS_PER_PAGE = 10;   
  26. for (int start = 0; start <  hits.length(); start += HITS_PER_PAGE) {   
  27. int end = Math.min(hits.length(), start + HITS_PER_PAGE);   
  28. for (int i = start; i <  end; i++) {   
  29. Document doc = hits.doc(i);   
  30. String url = doc.get("url");   
  31. if (url != null) {   
  32. out.println( (i + 1) + " < a href='" + url + "'>" +   
  33. replace(doc.get("title"), qc) +   
  34. "< /a>< br>");}   
  35. else {   
  36. System.out.println("沒(méi)有找到!");}   
  37. }}   
  38. out.println("< /body>< /html>");   
  39. _searcher.close();   
  40. };  

5.3在Tomcat上部署項(xiàng)目

Tomcat中的應(yīng)用程序是一個(gè)WAR(Web Archive)文件。WAR是Sun提出的一種Web應(yīng)用程序格式,與JAR類似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來(lái)組織:通 常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會(huì)有一個(gè)WEB-INF目錄,這個(gè)目錄很重要。通常在WEB-INF目錄下有一 個(gè)web.xml文件和一個(gè)classes目錄,web.xml是這個(gè)應(yīng)用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或 Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當(dāng)然也可以放到系統(tǒng)的 CLASSPATH中。

在Tomcat中,應(yīng)用程序的部署很簡(jiǎn)單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會(huì)自動(dòng)檢測(cè)到這個(gè)文件,并將其解壓。你 在瀏覽器中訪問(wèn)這個(gè)應(yīng)用的Jsp時(shí),通常***次會(huì)很慢,因?yàn)門(mén)omcat要將Jsp轉(zhuǎn)化為Servlet文件,然后編譯。編譯以后,訪問(wèn)將會(huì)很快。

5.4小節(jié)

本章中詳細(xì)介紹了如何構(gòu)架基于Tomcat的Web服務(wù)器,使得用戶通過(guò)瀏覽器進(jìn)行新聞的搜索,***還對(duì)Tomcat如何部署進(jìn)行了說(shuō)明。

第六章 搜索引擎策略

6.1簡(jiǎn)介

隨著信息多元化的增長(zhǎng),千篇一律的給所有用戶同一個(gè)入口顯然已經(jīng)不能滿足特定用戶更深入的查詢需求。同時(shí),這樣的通用搜索引擎在目前的硬件條件下,要及時(shí)更新以得到互聯(lián)網(wǎng)上較全面的信息是不太可能的。針對(duì)這種情況,我們需要一個(gè)分類細(xì)致精確、數(shù)據(jù)全面深入、更新及時(shí)的面向主題的搜索引擎。

由于主題搜索運(yùn)用了人工分類以及特征提取等智能化策略,因此它比上面提到的前三代的搜索引擎將更加有效和準(zhǔn)確,我們將這類完善的主題搜索引擎稱為第四代搜索引擎。

6.2面向主題的搜索策略

6.2.1導(dǎo)向詞

導(dǎo)向詞就是一組關(guān)鍵詞,它們會(huì)引導(dǎo)搜索器按照一定順序搜索整個(gè)網(wǎng)絡(luò),使得搜索引擎可以在最短的時(shí)間里面得到最全面的跟某一個(gè)主題相關(guān)的信息。通過(guò)設(shè)置導(dǎo)向 詞以及它們對(duì)應(yīng)的不同權(quán)值,所有標(biāo)題、作者、正文或超連接文本中含有某一導(dǎo)向詞的網(wǎng)頁(yè)都會(huì)被賦予較高的權(quán)值,在搜索的時(shí)候會(huì)優(yōu)先考慮。搜索器在向主控程序 獲得URL的時(shí)候也是按照權(quán)值由高到低的順序。反之,搜索器在向主控程序提交新的URL和它的權(quán)值的時(shí)候,主控程序會(huì)按照權(quán)值預(yù)先排序,以便下一次有序的 發(fā)給搜索器。

6.2.2網(wǎng)頁(yè)評(píng)級(jí)

在考慮一個(gè)網(wǎng)頁(yè)被另一個(gè)網(wǎng)頁(yè)的引用時(shí)候,不是單純的將被引用網(wǎng)頁(yè)的Hit Number加一,而是將引用網(wǎng)頁(yè)的連接數(shù)作為權(quán),同時(shí)將該引用網(wǎng)頁(yè)的重要性也考慮進(jìn)來(lái)(看看上面提到的例子,Yahoo!引用的網(wǎng)頁(yè)顯然比個(gè)人網(wǎng)站引用的網(wǎng)頁(yè)重要,因?yàn)閅ahoo!本身很重要),就可以得到擴(kuò)展后的網(wǎng)頁(yè)評(píng)分。

最早提出網(wǎng)頁(yè)評(píng)分的計(jì)算方法是Google。它們提出了一個(gè)“隨機(jī)沖浪”模型來(lái)描述網(wǎng)絡(luò)用戶對(duì)網(wǎng)頁(yè)的訪問(wèn)行為。模型假設(shè)如下:

1) 用戶隨機(jī)的選擇一個(gè)網(wǎng)頁(yè)作為上網(wǎng)的起始網(wǎng)頁(yè);

2) 看完這個(gè)網(wǎng)頁(yè)后,從該網(wǎng)頁(yè)內(nèi)所含的超鏈內(nèi)隨機(jī)的選擇一個(gè)頁(yè)面繼續(xù)進(jìn)行瀏覽;

3) 沿著超鏈前進(jìn)了一定數(shù)目的網(wǎng)頁(yè)后,用戶對(duì)這個(gè)主題感到厭倦,重新隨機(jī)選擇一個(gè)網(wǎng)頁(yè)進(jìn)行瀏覽,并重復(fù)2和3。

按照以上的用戶行為模型,每個(gè)網(wǎng)頁(yè)可能被訪問(wèn)到的次數(shù)就是該網(wǎng)頁(yè)的鏈接權(quán)值。如何計(jì)算這個(gè)權(quán)值呢?PageRank采用以下公式進(jìn)行計(jì)算:

其中Wj代表第j個(gè)網(wǎng)頁(yè)的權(quán)值;lij只取0、1值,代表從網(wǎng)頁(yè)i到網(wǎng)頁(yè)j是否存在鏈接;ni代表網(wǎng)頁(yè)i有多少個(gè)鏈向其它網(wǎng)頁(yè)的鏈接;d代表“隨機(jī)沖浪” 中沿著鏈接訪問(wèn)網(wǎng)頁(yè)的平均次數(shù)。選擇合適的數(shù)值,遞歸的使用以上公式,即可得到理想的網(wǎng)頁(yè)鏈接權(quán)值。該方法能夠大幅度的提高簡(jiǎn)單檢索返回結(jié)果的質(zhì)量,同時(shí) 能夠有效的防止網(wǎng)頁(yè)編寫(xiě)者對(duì)搜索引擎的欺騙。因此可以將其廣泛的應(yīng)用在檢索器提供給用戶的網(wǎng)頁(yè)排序上,對(duì)于網(wǎng)頁(yè)評(píng)分越高的網(wǎng)頁(yè),就排的越前。

6.2.3權(quán)威網(wǎng)頁(yè)和中心網(wǎng)頁(yè)

權(quán)威網(wǎng)頁(yè)

顧名思義,是給定主題底下的一系列重要的權(quán)威的網(wǎng)頁(yè)。其重要性和權(quán)威性主要體現(xiàn)在以下兩點(diǎn):

1) 從單個(gè)網(wǎng)頁(yè)來(lái)看,它的網(wǎng)頁(yè)內(nèi)容本身對(duì)于這個(gè)給定主題來(lái)說(shuō)是重要的;

2) 從這個(gè)網(wǎng)頁(yè)在整個(gè)互聯(lián)網(wǎng)重的地位來(lái)看,這個(gè)網(wǎng)頁(yè)是被其他網(wǎng)頁(yè)承認(rèn)為權(quán)威的,這主要體現(xiàn)在跟這個(gè)主題相關(guān)的很多網(wǎng)頁(yè)都有鏈接指向這個(gè)網(wǎng)頁(yè)。

由此可見(jiàn),權(quán)威網(wǎng)頁(yè)對(duì)于主題搜索引擎的實(shí)現(xiàn)有很重大的意義。主題搜索引擎一個(gè)很關(guān)鍵的任務(wù)就是從互聯(lián)網(wǎng)上無(wú)數(shù)的網(wǎng)頁(yè)之中最快最準(zhǔn)的找出這些可數(shù)的權(quán)威網(wǎng)頁(yè),并為他們建立索引。這也是有效區(qū)別主題搜索引擎和前三代傳統(tǒng)通用搜索引擎的重要特征。

中心網(wǎng)頁(yè)

是包含很多指向權(quán)威網(wǎng)頁(yè)的超鏈接的網(wǎng)頁(yè)。最典型中心網(wǎng)頁(yè)的一個(gè)例子是Yahoo!,它的目錄結(jié)構(gòu)指向了很多主題的權(quán)威網(wǎng)頁(yè),使得它兼任了很多主題的中心網(wǎng)頁(yè)。由中心網(wǎng)頁(yè)出發(fā),輕而易舉的就會(huì)到達(dá)大量的權(quán)威網(wǎng)頁(yè)。因此,它對(duì)于主題搜索引擎的實(shí)現(xiàn)也起了很大的意義。

權(quán)威網(wǎng)頁(yè)和中心網(wǎng)頁(yè)之間是一種互相促進(jìn)的關(guān)系:一個(gè)好的中心網(wǎng)頁(yè)必然要有超鏈接指向多個(gè)權(quán)威網(wǎng)頁(yè);一個(gè)好的權(quán)威網(wǎng)頁(yè)反過(guò)來(lái)也必然被多個(gè)中心網(wǎng)頁(yè)所鏈接。

6.3小節(jié)

本章介紹了面向主題的搜索策略,并作了詳細(xì)闡述。雖然在新聞搜索中并沒(méi)有應(yīng)用到搜索策略,但是對(duì)于WWW搜索引擎來(lái)說(shuō),搜索策略是極其重要的。他直接關(guān)系到搜索的質(zhì)量以及匹配度等性能。

【編輯推薦】

  1. 學(xué)習(xí)J2EE必須掌握的36個(gè)Package
  2. solaris上開(kāi)發(fā)J2EE應(yīng)用中文問(wèn)題的解決
  3. J2EE框架的種類一覽
  4. 基于開(kāi)源搜索引擎的架構(gòu)設(shè)計(jì)和J2EE實(shí)現(xiàn)(一)
  5. J2EE架構(gòu)的6個(gè)***實(shí)踐

責(zé)任編輯:book05 來(lái)源: 百度博客
相關(guān)推薦

2009-06-23 08:03:54

搜索引擎

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計(jì)模式

2009-06-22 17:34:40

J2EE架構(gòu)

2009-06-11 17:11:07

J2EE設(shè)計(jì)模式工廠模式

2009-06-10 16:25:43

J2EE架構(gòu)架構(gòu)

2009-06-23 08:08:45

J2EE體系架構(gòu)會(huì)話面數(shù)據(jù)訪問(wèn)對(duì)象

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護(hù)

2011-06-20 18:23:06

SEO

2009-06-11 17:19:47

J2EE設(shè)計(jì)模式Template

2009-02-23 11:18:06

J2EE架構(gòu)師Java

2009-02-05 10:54:47

登錄方式J2EEWeb

2009-06-23 16:48:26

J2EE常見(jiàn)問(wèn)題J2EE平臺(tái)

2009-06-19 17:03:44

J2EE學(xué)習(xí)

2011-04-07 13:05:23

DBSight搜索關(guān)系型數(shù)據(jù)庫(kù)

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-11 17:23:09

J2EE設(shè)計(jì)模式State模式

2009-06-10 16:35:26

2009-06-23 08:03:02

2009-06-08 21:34:09

J2EEJ2SEJ2ME
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)