5年,50+版本迭代,不忘初心,始終為了幫助廣大站長更容易實現站內搜索功能 一,開發初衷與思路: 基於Lucene.net重頭開發一個站內搜索其實挺費時,且需要一定的二開能力,很多人直接組合一些第三方開源的組件,但如果需要解決好搜索質量,兼顧搜準率與召回率,依然需要做不少調整優化的工作,後來我想能否 ...
5年,50+版本迭代,不忘初心,始終為了幫助廣大站長更容易實現站內搜索功能
一,開發初衷與思路:
基於Lucene.net重頭開發一個站內搜索其實挺費時,且需要一定的二開能力,很多人直接組合一些第三方開源的組件,但如果需要解決好搜索質量,兼顧搜準率與召回率,依然需要做不少調整優化的工作,後來我想能否簡化一下Lucene.net的使用,所以把分詞,配置,索引,搜索等各種底層API等封裝成更易於使用的一個中間件(就是上圖的SearchEasy.SearchEngine類庫),但是因為中間件不好用,乾脆就直接把站內搜索的前端也做了,這樣用戶就無需做任何二次開發,直接在瀏覽器點點滑鼠就可以解決數據導入,創建索引,然後搜索直接就能用了,這個站內搜索系統是這麼演化過來的,而且在多年的實踐當中,也做了很多細節優化工作。
二,核心組件:
Lucene.net : 搜索引擎的核心類庫,第三方開源;
Newtonsoft.Json :用於處理JSON的第三方庫;
TemplateEngine :用於生成靜態頁面的模板引擎;
中文分詞:自己開發,沒有用第三方的。
三,項目架構
基於.NET 4.0框架,傳統的三層架構,但在解決方案中的體現是兩個項目:
SearchEasy.SearchEngine : 搜索引擎類庫,整合了Lucene,分詞器,以及各種搜索相關的封裝類庫。
SearchEasy.SiteSearch : WEB項目,後臺管理與前臺搜索代碼,搜索部分沒有用偽靜態,純動態的,其中的聚合頁生成系統是基於模板引擎生成靜態頁面的。
解決方案示意圖:
四,心得體會
當然了,最後不得不說,這個小作品真的不是那麼好做,能堅守到如今,純粹靠的是一份情懷的。拿那麼長的時間,去任何TO B的軟體,估計都能比這個好很多,但從業確確實實幫助了一些站長,認識了不少的站長朋友,也許,收穫的見識比本身的收穫更多吧。
送給廣大技術朋友的一份建議:選擇比努力更重要,方向很重要,方向不好不一定能能守得雲開見月明
但是,產品本身還是不錯的,用的站長都說好,方便靈活,簡單易用,小眾是自然的啦,喜歡折騰與高大上技術的自然選擇ES,SOLR去了。
觀摩地址:http://www.searcheasy.net/zn