聞道軟體工作室開發的幾款軟體和搜尋引擎的技 術有不少重疊,如即將上線的projspider.com
其實就是一款簡單的垂直搜尋引擎,此外我們在多個專案中應用到的網路爬蟲模組也是搜尋引擎技術中的重要一環。
雖然聞道軟體工作室的工程師中並沒有人參與過大型搜尋引擎的開發,但對此都很感興趣。本文根據一些類似的專案經歷和公開的資料,對搜尋引擎相關技術作乙個淺解。
1、 爬蟲(spider)——資料**
作為搜尋引擎海量資料的**,爬蟲是搜尋引擎技術的重要一環,聞道軟體工作室有自己開發的爬蟲,所以對此技術很熟悉。
爬蟲的英文是spider,其實翻譯成蜘蛛更容易理解,無數**的鏈結構成了一張巨大的網,搜尋引擎的內容採集程式就像乙隻只勤勞的蜘蛛在這張網上爬來爬去,每遇到乙個感興趣的節點便記錄下來留待其他的程式處理。
爬蟲的實現其實不難,筆者用c++開發出一套爬蟲的雛形只有500行左右的**,而用python的話,不足100行。
但是,任何程式只要牽扯到了海量資料處理其開發難度和開發周期也會變得非常之大。舉乙個簡單的例子,判斷乙個鏈結是否抓取過,這是爬蟲每分析出乙個鏈結後都要做的判斷。如果此時你的記憶體中只有幾千、幾萬的鏈結,即使是一條條的遍歷對比也能基本上滿足要求,可如果是十萬、百萬、千萬、億級別呢?紅黑樹這些演算法勉強可以應付,十億、百億、千億、萬億的級別呢?只能建立索引了。
除了搜尋引擎外其實很多場景都應用到了爬蟲技術。如現在新興的輿情分析系統、資料探勘系統等。
現在越來越多的企業意識到資料的重要性,爬蟲作為乙個重要的資料**,將來肯定會在更多領域得到應用。
2、 中文分詞——資料預處理
中文分詞也是搜尋引擎中乙個重要的技術,分詞是否精準直接關係到查詢結構是否符合搜尋者的搜尋意圖
中文分詞相對於英文分詞來說難度大很多,因為英文有天然的分隔符,每個單詞都是乙個意思.如「wendao software studio」可以很簡單的根據空格分成「wendao」,「software」,「studio」三個詞。而對於對應的中文「聞道軟體工作室」,可以有「聞/道/軟/件/工/作/室」、「聞道/軟/件/工作/室」、「聞道/軟體/工作室」等等很多種分法。
中文分詞是乙個需要研究很深入的領域,當然,目前也有一些比較不錯中文詞庫,極大的簡化了開發者的工作。
3、 全文檢索——資料預處理
建立索引是在大資料量查詢時必不可少的重要方法。對於建立了索引的資料,我們可以在很短的時間內從海量資料中搜尋到相同的資料。
為了便於理解,我們可以把索引想象成一本書的目錄,有了目錄我們就可以在較短的時間內迅速找到我們感興趣的內容,而不必一頁頁翻開去找。
4、 排序——資料預處理
排序是搜尋引擎中非常重要的一環,排序不合理同樣會極大的傷害使用者體驗,而很多站長為了提高自身的排名又有許多作弊的手段,這使得排序演算法的開發難度更大。
搜尋引擎能獲取的引數也就幾種,無論排序演算法如何變化,那也只是調整這些引數的權重而已,以下列舉兩個重要的引數。
a)、內容
現在的搜尋引擎非常重視使用者體驗,所以這將是所有影響排名的最重要的引數。
b)、外鏈
外鏈仍然是搜素引擎評價乙個**質量的重要標準。在此不再贅述。
5、查詢——資料顯示
搜尋引擎相關資源
搜尋引擎相關資源 rfc the requests for ments 文件 英文rfc搜尋,很強大的rfc搜尋功能 英文rfc庫 china pub的rfc中文翻譯計畫,裡面有不少rfc文件已經翻譯成中文 china pub提供的rfc文件索引,相信國內的朋友訪問速度會快點 相信這個是目前最大的m...
搜尋引擎檢索技術
謝海勸 如此簡單的乙個輸入框 搜尋按鈕,卻可以實現如此神奇的一站式搜尋服務,為使用者提供豐富 準確的資訊,這要歸功於乙個強勁的後台引擎。使用者可曾想過,這麼簡單的行為,後台引擎可能會有成千上萬臺機器在為你服務。搜尋引擎就像一台高效運轉的發動機,不停響應使用者的請求,輸出使用者想要的資訊。高效的檢索系...
搜尋引擎檢索技術
如此簡單的乙個輸入框 搜尋按鈕,卻可以實現如此神奇的一站式搜尋服務,為使用者提供豐富 準確的資訊,這要歸功於乙個強勁的後台引擎。使用者可曾想過,這麼簡單的行為,後台引擎可能會有成千上萬臺機器在為你服務。搜尋引擎就像一台高效運轉的發動機,不停響應使用者的請求,輸出使用者想要的資訊。高效的檢索系統需要提...