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