1. 程式人生 > >自己動手實現谷歌網頁指紋計算方法

自己動手實現谷歌網頁指紋計算方法

 需求

由於最近網頁庫越來越大,搜尋到的結果經常遇到重複,並且結合新聞搜尋的需求,需要計算出哪些新聞是被轉載的。因此最近開始尋求一個比較好的網頁指紋計算方案。經過一番調查,發現谷歌的網頁指紋計算方法simhash方法比較實用。於是在搞清楚理論的基礎上,動手實現一下這個演算法。

理論基礎

實現分析

 hadoop叢集效能

 我在60臺hadoop叢集上對5T資料進行分詞計算指紋,需要2分鐘時間。分詞我是用的IK分詞。當然,接下來要實際應用中要選擇帶有詞性的分詞,這個有利於特徵選取,畢竟這個時間要求不是特別嚴格,指紋計算屬於線下計算過程。

提交測試組測試結果

測試結果如下:

1 測試目的
1、	能計算指紋
2、	相同正文計算出來的指紋應該相同
3、	相似正文計算出來的指紋應該相似
2 名詞解釋
3 測試約束
4 測試時間
5 測試環境
Server:10.10.224.19,路徑/application/search/simhash
6 測試結果
6.1 不相關的內容
Content1 = 新華社上海12月11日電(記者厲正巨集 吳晶)在錢學森同志誕辰100週年之際,錢學森圖書館11日在上海交通大學建成開館。中共中央總書記、國家主席、中央軍委主席胡錦濤對錢學森圖書館建成開館作出重要指示。  胡錦濤總書記指出,錢學森同志是享譽海內外的傑出科學家、我國航天事業的奠基人、愛國知識分子的優秀典範,在國家經濟、科技、國防建設中貢獻突出、功勳卓著。他強調,建立錢學森圖書館是一件很有意義的事情。要充分發揮這個圖書館在開展思想教育、普及科學知識、培養優秀人才等方面的積極作用,進一步引導廣大幹部群眾特別是青年教師和學生,努力學習錢學森同志愛黨愛國的政治品格、嚴謹求實的科學態度、開拓進取的創新精神、無私奉獻的高尚情操,共同為推進中國特色社會主義事業而不懈奮鬥。  中共中央政治局常委李長春專程到上海出席錢學森圖書館開館儀式,併為錢學森塑像揭幕。開館儀式結束後,李長春參觀了館內的錢學森事蹟展覽。這個展覽分為“中國航天事業奠基人”、“科學技術前沿的開拓者”、“人民科學家風範”、“戰略科學家的成功之道”四個部分,全面展示了錢學森同志奮鬥、奉獻的一生。在一件件珍貴文獻、實物和圖片前,李長春不時駐足仔細觀看,認真聽取講解員的介紹。李長春說,胡錦濤總書記的重要指示對錢學森同志的光輝業績和崇高品德給予了高度評價,對充分發揮錢學森圖書館的積極作用提出了明確要求,我們一定要認真學習、深入貫徹。  要進一步做好有關錢學森文獻、實物和資料的徵集工作,把錢學森同志留下的寶貴精神財富蒐集好、整理好、展示好,突出思想內涵,增強教育意義,使這個圖書館成為宣傳錢學森同志科學成就、高尚品德和愛國情懷的重要平臺,成為青年教師和學生接受愛國主義教育和勵志教育的重要課堂,成為在全社會培養科學精神和創新精神的重要基地,成為展示中國人民自力更生、奮發圖強精神風貌的重要視窗,激勵廣大幹部群眾特別是科技工作者在提高自主創新能力、建設創新型國家程序中勇攀高峰,作出更大貢獻。  中共中央政治局委員、國務委員劉延東出席開館儀式並講話。劉延東說,胡錦濤總書記的重要指示高屋建瓴、思想深刻,為學習宣傳錢學森同志先進事蹟和崇高精神指明瞭方向。我們要認真貫徹落實胡錦濤總書記的重要指示精神,通過建設和用好錢學森圖書館等教育基地,不斷髮揚光大錢學森等老一輩科學家的崇高精神和光榮傳統,為建設中國特色社會主義偉大事業作出新的更大貢獻。  中共中央政治局委員、上海市委書記俞正聲出席開館儀式。  開館儀式由教育部部長袁貴仁主持。解放軍總裝備部政委王洪堯、上海市委副書記殷一璀、上海交通大學黨委書記馬德秀、錢學森之子錢永剛在儀式上先後發言。
content1 fingerprinter = 9223372036579524605
Content2 = Mac OS X v10.4 TigerWelcome to Tiger (PDF)The official user's guide to the Tiger experience.Support CommunitiesSeek help from other Mac OS X v10.4 Tiger users.Software UpdateGet the latest updates to your Mac OS X v10.4 Tiger software.DownloadsManualsSystem RequirementsSee all Support Topics Top Support Topics■I can't receive email■I can't send email■Help with setting up your email accounts■Helpful tips and support for bundled & 3rd party products■Connecting to the Internet with a cable modem■Connecting to the Internet with DSLHow To■Using Mac OS X Mail■Connecting to the Internet■Reset password■Lock your computer screen■Printing & faxing■Accounts, passwords & security■Install Mac OS X 10.4 Tiger■Connecting to networks and sharing your computer■Install Parallels with Windows XP■Play WMA files■Boot Camp overview■Remove Microsoft Office v.X Test DriveFeatures■Mail■iChat■QuickTime■Safari■iSync■iCal■Address Book■Classic EnvironmentAdditional Features.--------------------------------------------------------------------------------Troubleshooting■Mac OS X: Updating your software■Troubleshooting a cable modem, DSL, or LAN Internet connection■Information and download■Apple keyboard mapping in Windows■Mac OS X keyboard shortcuts■Battery not recognized or "X" icon appears on menu bar■Well known TCP and UDP ports used by Apple software products■Issues sending messages in Mail or other email applications■Error message when synching phone via Bluetooth in Mac OS X 10.4.9 or later■Popping sounds after updating to Mac OS X 10.4.10More.Support Communities Discuss Tiger topics with other users in our customer forums. ■Installation & Setup■Mail & Address Book■Getting Online & Networking■Administration, Accounts & Login■Printing & Faxing ■Using Mac OS X Tiger 
content2 fingerprinter = 9222807978594205299
content1 content2 distance = 14

6.2 內容相同
Content1 = 新華社上海12月11日電(記者厲正巨集 吳晶)在錢學森同志誕辰100週年之際,錢學森圖書館11日在上海交通大學建成開館。中共中央總書記、國家主席、中央軍委主席胡錦濤對錢學森圖書館建成開館作出重要指示。….
content1 fingerprinter = 9223372036579524605
Content2 = 新華社上海12月11日電(記者厲正巨集 吳晶)在錢學森同志誕辰100週年之際,錢學森圖書館11日在上海交通大學建成開館。中共中央總書記、國家主席、中央軍委主席胡錦濤對錢學森圖書館建成開館作出重要指示。….
content2 fingerprinter = 9223372036579524605
content1 content2 distance = 0

6.3 內容相似(包含)
Content1 = 新華社上海12月11日電(記者厲正巨集 吳晶)在錢學森同志誕辰100週年之際,錢學森圖書館11日在上海交通大學建成開館。中共中央總書記、國家主席、中央軍委主席胡錦濤對錢學森圖書館建成開館作出重要指示。  胡錦濤總書記指出,錢學森同志是享譽海內外的傑出科學家、我國航天事業的奠基人、愛國知識分子的優秀典範,在國家經濟、科技、國防建設中貢獻突、功勳卓著。他強調,建立錢學森圖書館是一件很有意義的事情。要充分發揮這個圖書館在開展思想教育、普及科學知識、培養優秀人才等方面的積極作用,進一步引導廣大幹部群眾特別是青教師和學生,努力學習錢學森同志愛黨愛國的政治品格、嚴謹求實的科學態度、開拓進取的創新精神、無私奉獻的高尚情操,共同為推進中國特色社會主義事業而不懈奮鬥。  中共中央政治常委李長春專程到上海出席錢學森圖書館開館儀式,併為錢學森塑像揭幕。開館儀式結束後,李長春參觀了館內的錢學森事蹟展覽。這個展覽分為“中國航天事業奠基人”、“科學技術前沿的拓者”、“人民科學家風範”、“戰略科學家的成功之道”四個部分,全面展示了錢學森同志奮鬥、奉獻的一生。在一件件珍貴文獻、實物和圖片前,李長春不時駐足仔細觀看,認真聽取講解員的介紹。李長春說,胡錦濤總書記的重要指示對錢學森同志的光輝業績和崇高品德給予了高度評價,對充分發揮錢學森圖書館的積極作用提出了明確要求,我們一定要認真學習、深入貫徹。  要進一步做好有關錢學森文獻、實物和資料的徵集工作,把錢學森同志留下的寶貴精神財富蒐集好、整理好、展示好,突出思想內涵,增強教育意義,使這個圖書館成為宣傳錢學森同志科學成就高尚品德和愛國情懷的重要平臺,成為青年教師和學生接受愛國主義教育和勵志教育的重要課堂,成為在全社會培養科學精神和創新精神的重要基地,成為展示中國人民自力更生、奮發圖強精神風貌的重要視窗,激勵廣大幹部群眾特別是科技工作者在提高自主創新能力、建設創新型國家程序中勇攀高峰,作出更大貢獻。  中共中央政治局委員、國務委員劉延東出席開館儀式並講話劉延東說,胡錦濤總書記的重要指示高屋建瓴、思想深刻,為學習宣傳錢學森同志先進事蹟和崇高精神指明瞭方向。我們要認真貫徹落實胡錦濤總書記的重要指示精神,通過建設和用好錢學森圖書館等教育基地,不斷髮揚光大錢學森等老一輩科學家的崇高精神和光榮傳統,為建設中國特色社會主義偉大事業作出新的更大貢獻。  中共中央政治局委員、上海市委書記俞正聲出席開館式。  開館儀式由教育部部長袁貴仁主持。解放軍總裝備部政委王洪堯、上海市委副書記殷一璀、上海交通大學黨委書記馬德秀、錢學森之子錢永剛在儀式上先後發言。
content1 fingerprinter = 9223372036579524605
Content2 = 新華社上海12月11日電(記者厲正巨集 吳晶)在錢學森同志誕辰100週年之際,錢學森圖書館11日在上海交通大學建成開館。中共中央總書記、國家主席、中央軍委主席胡錦濤對錢學森圖書館建成開館作出重要指示。  胡錦濤總書記指出,錢學森同志是享譽海內外的傑出科學家、我國航天事業的奠基人、愛國知識分子的優秀典範,在國家經濟、科技、國防建設中貢獻突、功勳卓著。他強調,建立錢學森圖書館是一件很有意義的事情。要充分發揮這個圖書館在開展思想教育、普及科學知識、培養優秀人才等方面的積極作用,進一步引導廣大幹部群眾特別是青教師和學生,努力學習錢學森同志愛黨愛國的政治品格、嚴謹求實的科學態度、開拓進取的創新精神、無私奉獻的高尚情操,共同為推進中國特色社會主義事業而不懈奮鬥。
content2 fingerprinter = 8070441718968745849
content1 content2 distance = 7
6.4 處理效率
處理效率= (內容1字數 + 內容2字數)×重複次數 / 時間
CONTENTTYPE	效率(字/秒)
中英	2211612
中文	1247368

6.5 遺留問題(mantis:0002933)
問題
<正文指紋>當幾乎相同的正文內容中有不同的數字、字母(全半形)時,指紋相差較大

現象
Content1 = 新華社上海12月11日電(記者厲正巨集 吳晶)在錢學森同志誕辰100週年之際,錢學森圖書館11日在上海交通大學建成開館。中共中央總書記、國家主席、中央軍委主席胡錦濤對錢學森圖書館建成開館作出重要指示。
content1 fingerprinter = 1724377254170442105
Content2 = 新華網上海12月11日電(記者厲正巨集、吳晶)在錢學森同志誕辰100週年之際,錢學森圖書館11日在上海交通大學建成開館。中共中央總書記、國家主席、中央軍委主席胡錦濤對錢學森圖書館建成開館作出重要指示。
content2 fingerprinter = 6340984712413559161
content1 content2 distance = 2
原因分析
分詞結果中沒有權重資訊,導致所有內容權重相同,對結果影響較大。
7 結果分析
1、	功能上滿足設計需求;
2、	每秒處理效率可以達到一百萬字以上。

相關推薦

自己動手實現網頁指紋計算方法

 需求 由於最近網頁庫越來越大,搜尋到的結果經常遇到重複,並且結合新聞搜尋的需求,需要計算出哪些新聞是被轉載的。因此最近開始尋求一個比較好的網頁指紋計算方案。經過一番調查,發現谷歌的網頁指紋計算方法simhash方法比較實用。於是在搞清楚理論的基礎上,動手實現一下這個演算法

自己動手實現簡單權限控制

saweb 權限控制,很多項目會引入 shiro/spring-security。 shiro/spring-security 繼承 servlet-->filter抽象接口,運用合適的設計模式, 通過攔截客戶端請求,來實現各個角色對系統資源的訪問權限。 一時興起,有了自己實現權限控制的想法

自己動手實現瀏覽器,21天自制chromium:起手篇

發展 soci original tps 方案 ive ejs 系列 kit 轉:https://zhuanlan.zhihu.com/p/29101613?utm_medium=social&utm_source=qq 大家好,我又來了。這篇是21天自制原子彈的

自己動手實現一個簡單的JSON解析器

pair bool 優點 輕量 結束 pan isdigit 復雜 false 1. 背景 JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。相對於另一種數據交換格式 XML,JSON 有著諸多優點。比如易讀性更好,占用空間更少等

自己動手實現Epoll

epoll線程安全 rbtree smp epoll設計與實現 lt與et Epoll是Linux IO多路復用的管理機制。作為現在Linux平臺高性能網絡IO必要的組件。內核的實現可以參照:fs/eventpoll.c .為什麽需要自己實現epoll呢?現在自己打算做一個用戶態的協議棧

【原創】自己動手實現牛逼的單例模式

pre adr 關鍵字 LV trace ack 也會 code exceptio 引言 其實寫這篇文章之前,我猶豫了一下,畢竟單例大家都知道,寫這麽一篇文章會不會讓人覺得老掉牙。後來想想,就當一種記錄吧。先來一副漫畫吧,如下圖所示 ok,我們回顧下小灰的遭遇,上述漫畫所

手摸手教你自己動手實現一個前端路由

前言 用過現代前端框架的同學,對前端路由一定不陌生, vue, react, angular 都有自己的 router, 那麼你對 router 的工作原理了解嗎? 如果還不瞭解, 那麼請跟我一起來手寫一個簡單的前端路由, 順便了解一下. 實現路由的2種方式 hash模式

自己動手實現一個前端路由

單頁面應用利用了JavaScript動態變換網頁內容,避免了頁面過載,提供了流暢的使用者體驗;路由則提供了瀏覽器地址變化,網頁內容也跟隨變化,兩者結合起來則為我們提供了體驗良好的單頁面web應用 前端路由實現方式 前端路由需要實現三個功能:①瀏覽器地址變化,切換頁面;②點選瀏覽器【後退】、【前進

自己動手實現html5視訊播放器倍數播放功能

自己動手實現html5視訊播放器倍數播放功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>阿酷TONY--Tangni&

Atitit 學習一項技術的方法總結 目錄 1. 自己動手實現學習法 1 2. 七步學習法 —— 如何高效學習一項技能 1 3. 如何快速學習一項技能-十步學習法 - HugoLester - 部落格

Atitit 學習一項技術的方法總結   目錄 1. 自己動手實現學習法 1 2. 七步學習法 —— 如何高效學習一項技能 1 3. 如何快速學習一項技能-十步學習法 - HugoLester - 部落格園.html 2    

自己動手實現java資料結構(一) 向量

1.向量介紹   計算機程式主要執行在記憶體中,而記憶體在邏輯上可以被看做是連續的地址。為了充分利用這一特性,在主流的程式語言中都存在一種底層的被稱為陣列(Array)的資料結構與之對應。在使用陣列時需要事先宣告固定的大小以便程式在執行時為其開闢記憶體空間;陣列通過下標值計算出地址偏移量來對內部元素進行訪問

自己動手實現java數據結構(一) 向量

註意 api接口 復雜度 郵箱 ++ pri ont ren new 1.向量介紹 計算機程序主要運行在內存中,而內存在邏輯上可以被看做是連續的地址。為了充分利用這一特性,在主流的編程語言中都存在一種底層的被稱為數組(Array)的數據結構與之對應。在使用數組時需要事先聲明

自己動手實現java資料結構(二) 連結串列

1.連結串列介紹   前面我們已經介紹了向量,向量是基於陣列進行資料儲存的線性表。今天,要介紹的是線性表的另一種實現方式---連結串列。   連結串列和向量都是線性表,從使用者的角度上依然被視為一個線性的列表結構。但是,連結串列內部儲存資料的方式卻和向量大不相同:連結串列的核心是節點。節點儲存"資料"的同

自己動手實現神經網路分詞模型

本文由**羅周楊[email protected]**原創,轉載請註明原作者和出處。 原文連結:luozhouyang.github.io/deepseg 分詞作為NLP的基礎工作之一,對模型的效果有直接的影響。一個效果好的分詞,可以讓模型的效能更好。 在嘗試使用神經網路來分詞之前,

自己動手實現一個簡單的Mybatis(初級版本1.0)

手寫Mybatis-v1.0 原始碼連結(包括v1.0與v2.0): https://github.com/staticLin/customMyBatis.git 從上一個文章 ---Mybatis概述中瞭解到了Mybatis的主要架構與底層原理流程,結尾給出了一個巨集觀流程圖,可

自己動手實現java資料結構(三) 棧

自己動手實現java資料結構(三) 棧 1.棧的介紹   在許多演算法設計中都需要一種"先進後出(First Input Last Output)"的資料結構,因而一種被稱為"棧"的資料結構被抽象了出來。   棧的結構類似一個罐頭:只有一個開口;先被放進去的東西沉在底下,後放進去的東西被

自己動手實現html去標籤和文字提取

原文出處:https://blog.csdn.net/AsuraDong/article/details/72877382 隨意觀看 工具準備 全形和半形字元 網頁字元實體 Code實現 之後... 工具準備 python3.

NET Core微服務之路:自己動手實現Rpc服務框架,基於DotEasy.Rpc服務框架的介紹和整合

本篇內容屬於非實用性(拿來即用)介紹,如對框架設計沒興趣的朋友,請略過。   快一個月沒有寫博文了,最近忙著兩件事;    一:閱讀劉墉先生的《說話的魅力》,以一種微妙的,你我大家都會經常遇見的事物,來建議說話的“藝術和魅力”,對於我們從事軟體開發、不太善於溝通

自己動手實現資料結構模板(1):雙向連結串列

今天忽然心血來潮,自己動手實現了一個簡單的雙向連結串列和基本功能,大致實現瞭如下功能 dtsListNode為結點類,包括值value、前向指標pre和後向指標next。 dtsList為雙向連結串列,能夠通過begin和end函式獲得首地址指標和指向最後一

使用阿里雲 dns sdk 解決電信公網ip自動變化問題;自己動手實現ddns

首先說下情況,我的樹莓派通過電信光貓dmz主機設定全埠對映得到了公網ip,ssh等連線都很迅速,ping值為60ms。上海電信200M寬頻,上傳25mbps。由於是動態公網ip,電信隔幾天就換ip,這個差不多十天,不一定。我寫了簡單的指令碼,用計劃任務每分鐘訪問我的vultr