做一個簡單的搜索引擎,需要哪些知識和技術?

用在一個不大的電商網站或是類似果殼的網站上。


簡單的啊……到底多簡單呢?

從你的描述來看,這其實不是搜索引擎,僅僅是一個檢索功能而已。要實現這個就很簡單咯~

你可以百度下xunsearch……簡單配置就好。


Coursera - Free Online Courses From Top Universities

推薦UIUC的這門課,介紹了搜索引擎的整個流程,也有programming assignments~~

當然也介紹了BM25等page rank演算法~~~

用了MeTA這個工具,挺好的課程。


去年專業實訓做過一個簡單的搜索引擎,所以可以簡單說下框架。《數學之美》裡面提到搜索引擎分為三大塊:下載,索引,搜索。

下載:

這部分是需要把你想要搜索的範圍的原始數據。如果搜索的範疇是網頁上的內容,那麼它就是一個網路爬蟲。我當時做的是一個校內網的搜索引擎,所以就寫了一個爬蟲從校園網主頁開始下載,分析網頁內的鏈接把符合要求的鏈接加入待下載隊列,這樣一直把所有校園網的網頁全部都下載下來。

索引

搜索引擎之所以可以搜的那麼快,都是索引的功勞。索引是一種專門針對搜索優化的結構,詳情可以百度 倒排索引 。

前面搜索下載的是網頁全文,裡面的html標籤是不需要被搜索的,所以要把數據清洗一下,提取出其中的重要內容。

文本內容的預處理還需要分詞 、去除無意義的停用詞等。分詞是什麼呢…你還是百度吧

建立索引有現成的庫:LUCENE ,它自帶有幾個默認分詞器,如果想要你的搜索引擎搜索的結果更好,你可以使用的中文分詞器(這個當然也有現成的工具啦,ik分詞,NLPIR這些都是現有的解決方案,效果也還不錯)如果之前沒有接觸過它,那就需要學習一下。

索引建立好了,接下來就是搜索了。搜索是將根據查詢詞,搜索索引內匹配的內容,然後展示出來。符合查詢詞的結果多了的時候怎麼辦呢,這就涉及到排序的問題,這就有點複雜啦,這就涉及到很多排序演算法比如tfidf之類的東西,不過這些lucene的api也幫你做了,它的內部有一個打分機制,將打分高放在搜索結果的前面。

以上三個點,每一個地方如果要展開,都可以寫一部小書了,根據題主情況選擇了解學習。

說了以上,如果你只是想實現一個小文本量的檢索功能,select * from xxx like ...就可以滿足你的需求。


https://pythonhosted.org/Whoosh/


看題主的描述是想在站內建一個搜索引擎,根本不需要考慮什麼爬蟲的問題,建議以開源搜索框架Solr(或者Elasticsearch)開始。

DB-Engines Ranking,這裡是一個搜索引擎流行度的排行,以Lucene為基礎的工具非常流行,掌握了相關的應用和技術足以應對一般的搜索場景,同時對搜索的方方面面有一定的了解。

如果想對搜索的原理有更多了解,建議通過《信息檢索導論》建立主幹。其他內容完全可以靠google填充。

張俊林的《這就是搜索引擎-核心技術詳解》號稱詳解實則科普,如果決定認真學習,不建議看這本書。


既然說做一個簡單的搜索引擎而已,就簡單實現搜索引擎的主要部分就ok了。簡單搜索引擎主要包含三個部分:爬蟲,索引過程,索引檢索。

爬蟲的實現方式很多,主要將目標數據獲取下來。

索引過程主要通過分詞方法,對數據內容進行倒排序處理,選比較好的分詞工具可以實現。

檢索過程,可能會通過分詞,或者針對用戶輸入信息進行自然語言處理,達到索引的檢索。


曾今也想自己做一個簡單的搜索引擎,學長推薦的一個BLOG,我按照BLOG的思路用c++實現了一個,可以檢索自己學校網站的信息。

一個簡單的搜索引擎只需要:網路爬蟲,分詞和檢索。IBM developerWorks 中國 : Java technology : 文檔庫


首先需要一個爬蟲。如果你用java的話 寫一個不難。需要分析html。然後 做索引 可以用lucene。然後做個界面 顯示lucene的搜索結果。


其實電子商務搜索引擎在整個搜索引擎家族的製作中相對來說應該算是不難的一個,只要有一定的技術和電商頭腦都可以做出不錯的來。當然,裡面涉及的經濟學、美學等等交叉學科的知識,也是需要掌握的。下面就說幾點我認為重要的東西。

1.必須要掌握搜索原則和搜索方法

因為電子商務搜索引擎最主要的目標就是讓受眾看到你的東西,這才有可能產生你期望的效益,無論是購買還是幫你推廣。所以首先要理解搜索引擎的概念及其工作原理,然後要理解一些最基本的演算法,如果你連爬蟲什麼的都不知道,那就別指望去做出好的引擎了。即使再小也做不出。

理論和方法層面可以看看入門經典教科書籍,例如《搜》巴特爾,《低智商社會》;國內的《搜索引擎》、《深入搜索引擎》都不錯。

2.必須掌握一定的技術性內容

這個就沒得說啦!除非你要把工程外包。這裡我覺得一定要注意電子商務搜索引擎和其他搜索引擎的區別,比如說具體的排序演算法。你究竟想讓自己的網站到達什麼程度?如何排名?都是你工作不同的動力。與此同時,要掌握些推廣的方法,也許你不屑於做這些,可以,但是請不要忘記你的對手是做這些的,所以要學習些SEO 和 SEM的知識。某寶上的推廣營銷雖然非常不靠譜,但也可以「取其精華去其糟粕」。

3.有關電子商務搜索引擎的小細節

例如分析自己的網站是否適合競價排名?如何安排搜索引擎的關鍵詞排放?如何根據自己想要推廣的內容來進行關鍵詞設定?如何提高點擊率與業務轉換率的關係等。


The Anatomy of a Search Engine

我第一個搜索引擎,剛開始動手前,參考的第一篇文章。

即使不做搜索引擎,瞻仰下這兩位大神的文章也好。


答主分享一個作業級別的,可以檢索10萬+網頁。

先看效果:

訪問地址:

http://120.27.46.201:8080/UCASIR/search?query=%20%E8%B6%B3%E7%90%83amp;amp;p=10

實現步驟:

scrapy+Lucene搭建小型搜索引擎(現代信息檢索大作業)

後台都是體育新聞,檢索體育類關鍵詞會有更多的結果。

Lucene、Elasticsearch、ELK感興趣的可以訪問我的博客:姚攀的博客 - 博客頻道 - CSDN.NET。


《這就是搜索引擎:核心技術詳解(搜索引擎相關技術 核心演算法 雲計算 雲存儲 搜索引擎優化)》張俊林 著


嗯,這是我大二的時候用Python寫的,很簡單,僅供學習使用。

TinySearchEngine

給個星哦 ^_^


我有個關於元數據搜索引擎建立的問題需要請教大家:現有一個excel的資料庫,需要轉換成epub(可以的話,再把epub關聯metadata),然後對這個資料庫內容進行關鍵詞搜索。這個搜索引擎最好是元數據搜索(metadata)


你的搜索引擎的用途是:用在一個不大的電商網站或是類似果殼的網站上

說明你的數據來源的問題解決了。所以就剩下:索引處理和查詢處理這兩步了。為什麼需要這兩步?你需要了解信息檢索的理論基礎知識,不需要很深。

索引處理:每個庫的方式都不一樣。但是基礎理論知識都一樣

查詢處理:每個庫的查詢DSL都不一樣。

總一句話:先簡單學習信息檢索的基礎理論知識,然後學習一個現成的搜索引擎工具:Solr,Elasticsearch等。


搜索引擎門檻較高,最好建立在一款成熟的開源框架之上。當然搞之前最好花點時間了解搜索引擎的本質——索引。

爬蟲、分詞、page ranking、查找都是圍繞著索引做文章。題主需要了解索引相關的數據結構和演算法,比如B+樹、hash表以及經典的排序查找演算法。mysql用的是B+樹,通用搜索引擎的結構簡單來說是倒排索引。


https://www.elastic.co/products/elasticsearch


好吧,不請自來,我的畢業設計是《旅遊景點搜索引擎》,基於Lucene和Solr做的,整個系統的難度不是非常大。用到的技術主要有網路爬蟲、HTML解析、中文分詞、文檔索引、空間搜索、RESTful Web Service、Ajax、Hybrid App、容器技術Docker、SolrCloud、集群等。此外還用到了其他的開源工具,如Heritrix、webmagic、Zookeeper、Ionic、gradle、jetty等為工具。最重要的是我還比較系統的介紹了整個項目開發,好吧,我就是來宣傳我的文章的,Gitbook上的鏈接: 用Solr構建垂直搜索引擎,博客上的鏈接: 【總述】用Solr構建垂直搜索引擎


推薦閱讀:

有哪些好的編程學習,演算法學習,以及學生練習的網站推薦給學生?
如何證明實現的演算法和數據結構是正確的?
機器學習中的邏輯回歸到底是回歸還是分類?能否用邏輯回歸實現連續目標的預測,比如說時間序列?怎麼實現?
怎樣判斷平面上兩個扇形是否有重疊?

TAG:互聯網 | 演算法 | 文本挖掘 | 計算機科學 | 搜索引擎 |