中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

電商搜索引擎的架構(gòu)設(shè)計(jì)和性能優(yōu)化

2019-03-26    來源:oschina.net

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

電商搜索引擎的特點(diǎn)

眾所周知,標(biāo)準(zhǔn)的搜索引擎主要分成三個(gè)大的部分,第一步是爬蟲系統(tǒng),第二步是數(shù)據(jù)分析,第三步才是檢索結(jié)果。

首先,電商的搜索引擎并沒有爬蟲系統(tǒng),因?yàn)樗械臄?shù)據(jù)都是結(jié)構(gòu)化的,一般都是微軟的數(shù)據(jù)庫或者 Oracle 的數(shù)據(jù)庫,所以不用像百度一樣用「爬蟲」去不斷去別的網(wǎng)站找內(nèi)容,當(dāng)然,電商其實(shí)也有自己的「爬蟲」系統(tǒng),一般都是抓取友商的價(jià)格,再對自己進(jìn)行調(diào)整。

第二點(diǎn),就是電商搜索引擎的過濾功能其實(shí)比搜索功能要常用。甚至大于搜索本身。什么是過濾功能?一般我們網(wǎng)站買東西的時(shí)候,搜了一個(gè)關(guān)健詞,比如尿不濕,然后所有相關(guān)品牌或者其他分類的選擇就會呈現(xiàn)在我們面前。對百度而言,搜什么詞就是什么詞,如果是新聞的話,可能在時(shí)間上會有一個(gè)過濾的選項(xiàng)。

第三點(diǎn),電商搜索引擎支持各種維度的排序,包括支持好評、銷量、評論、價(jià)格等屬性的排序。而且對數(shù)據(jù)的實(shí)時(shí)性的要求非常高。對一般的搜索引擎,只有非常重要的網(wǎng)站,比如一些重量級的門戶網(wǎng)站,百度的收錄是非?斓,但是對那些流量很小的網(wǎng)站,可能一個(gè)月才會爬一次。電商搜索對數(shù)據(jù)的實(shí)時(shí)性要求主要體現(xiàn)在價(jià)格和庫存兩個(gè)方面。

電商搜索引擎另一個(gè)特點(diǎn)就是不能丟品,比如我們在淘寶、天貓開了個(gè)店鋪,然后好不容易搞了一次活動,但是卻搜不到了,這是無法忍受的。除此之外,電商搜索引擎與推薦系統(tǒng)和廣告系統(tǒng)是相互融合的,因?yàn)樗阉匾鎸α髁康呢暙I(xiàn)是最大的,所以大家都希望把廣告系統(tǒng)能跟其融合。當(dāng)然,還有一點(diǎn)非常重要,就是要保證絕對的高可用,而且不能宕機(jī)。

電商搜索引擎的架構(gòu)

因?yàn)殡娚趟阉饕话愕乃阉饕鎱^(qū)別很大,所以在架構(gòu)的設(shè)計(jì)上也獨(dú)具特色。

首先,搜索引擎的實(shí)現(xiàn)方式有很多種,有谷歌、百度、搜狗這種非常大的公司,也有京東、淘寶、當(dāng)當(dāng)這樣的電商搜索引擎,很多中小型的電商可能更喜歡用一個(gè)開源的搜索引擎。所以總的來說,主要包括以下這幾種方式:

第一種是「Lucene+自己封裝」,只用來做檢索,然后封裝,后面所有的 ES,這兩個(gè)是完整的解決方案,而且包括索引所有的東西,只需要部署好業(yè)務(wù)邏輯,然后查找結(jié)果就可以了。

第二種就是 Solr,這是一個(gè)高性能,采用 Java5 開發(fā),基于 Lucene 的全文搜索服務(wù)器。同時(shí)對其進(jìn)行了擴(kuò)展,提供了比 Lucene 更為豐富的查詢語言,同時(shí)實(shí)現(xiàn)了可配置、可擴(kuò)展并對查詢性能進(jìn)行了優(yōu)化,并且提供了一個(gè)完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎。

第三種是 ElasticSearch,這是一個(gè)基于 Lucene 的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 開發(fā)的,并作為 Apache 許可條款下的開放源碼發(fā)布,目前使用的也非常多。

這里提一下,當(dāng)當(dāng)?shù)乃阉饕媸亲约簩?shí)現(xiàn)的,,F(xiàn)在,新興的互聯(lián)網(wǎng)公司大部分都是使用第一種或者第二種,數(shù)據(jù)量比較大的一般采用第三種。

電商搜索引擎標(biāo)配模塊

接下來我想講一下,如果我們自己做一個(gè)搜索引擎的話需要實(shí)現(xiàn)哪些功能(上圖是電商搜索引擎的標(biāo)準(zhǔn)模塊),其實(shí)不止是電商搜索引擎,除了通搜的搜索引擎,其他的搜索引擎也是使用這樣的標(biāo)配。

對檢索模塊而言,首先是對用戶的意圖進(jìn)行分析,根據(jù)用戶的搜索詞來進(jìn)行純算法的實(shí)現(xiàn)。比如用戶的搜索詞是「黑包包」,其實(shí)用戶的本意就是買一個(gè)黑色的包,但是這個(gè)「包」可以跟別的詞組合在一起,甚至在搜索結(jié)果中會出現(xiàn)「包子」。所以,這就需要 query 分析系統(tǒng)來做,告訴檢索系統(tǒng),你需要主要在服裝鞋帽中的分類去找,而不是生鮮食品類。

設(shè)計(jì)到技術(shù)層面,當(dāng)當(dāng)網(wǎng)使用的是 C++。如果構(gòu)建一個(gè)性能好的系統(tǒng),一些老一點(diǎn)的公司,大家都是在使用 C++ 或者是 C 語言。不止是當(dāng)當(dāng)網(wǎng),其實(shí)很多公司都是使用的 C 或者 C++ 實(shí)現(xiàn)的搜索引擎。

數(shù)據(jù)更新模塊

第二個(gè)模塊就是數(shù)據(jù)更新模塊,該模塊負(fù)責(zé)生成索引。而數(shù)據(jù)中心模塊主要做的事情,就是將原始的結(jié)構(gòu)化數(shù)據(jù),變成一個(gè)可供檢索系統(tǒng)使用的搜索數(shù)據(jù)庫。當(dāng)然,數(shù)據(jù)更新模塊和檢索模塊是分開還是合并呢?其實(shí)從本質(zhì)上講,都是一堆代碼,完全可以寫在一個(gè)進(jìn)程里。當(dāng)然,也可以分開,通過網(wǎng)絡(luò)往外輸入,各自都有道理。第一種是簡單粗暴型的,如果是普通電商,像生鮮電商,數(shù)據(jù)量不大,實(shí)時(shí)性、季節(jié)性很強(qiáng),就可以把兩個(gè)系統(tǒng)用一個(gè)進(jìn)程來完成。但是如果到了百萬、千萬甚至上億級別的話,就不可能部在一臺機(jī)器上了。

標(biāo)簽: 電商搜索引擎 搜索引擎優(yōu)化 電商網(wǎng)站優(yōu)化 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:如何做好現(xiàn)階段的網(wǎng)站排名?

下一篇:如何通過Canonical標(biāo)簽解決重復(fù)內(nèi)容收錄問題?