譯者注:想要構(gòu)建或改進(jìn)搜索體驗(yàn)?從這里開(kāi)始。以下為譯文。
如果你問(wèn)一名軟件工程師:“如何給產(chǎn)品添加搜索功能?”或者“如何構(gòu)建一個(gè)搜索引擎?”你可能會(huì)得到這樣一個(gè)回答:“我們剛剛推出了ElasticSearch集群,以后再也不用擔(dān)心構(gòu)建搜索功能了?!?/span>
但真的是這樣嗎?許多現(xiàn)有產(chǎn)品仍然 有 很不友好的 搜索 體驗(yàn)。很多工程師對(duì)搜索引擎的工作原理知之甚微,而這些知識(shí)往往是提高搜索質(zhì)量的必要條件。
盡管有很多的開(kāi)源軟件包,也有了很多的研究成果,但很少有介紹關(guān)于如何構(gòu)建穩(wěn)定搜索體驗(yàn)的文章。更諷刺的是,如果在網(wǎng)上搜索關(guān)于搜索技能的專業(yè),得到的結(jié)果其實(shí)并不是自己想要的。
如果你想構(gòu)建搜索功能,那么這篇文章會(huì)對(duì)你提供很大的幫助。當(dāng)然,并不是說(shuō)這篇文章會(huì)包含所有的內(nèi)容,但我們會(huì)根據(jù)讀者的反饋進(jìn)行修改。
由于我有谷歌、Airbnb和幾家初創(chuàng)公司的工作經(jīng)驗(yàn),因此我將基于這些經(jīng)驗(yàn)介紹一些受歡迎的方法、算法、技術(shù)和工具。
如果你不了解搜索相關(guān)的問(wèn)題有多復(fù)雜,那么產(chǎn)品的用戶體驗(yàn)也肯定很糟糕,這樣不僅讓之前的努力付出東流,產(chǎn)品還很有可能會(huì)失敗。
如果你缺乏耐心或者已經(jīng)了解了很多知識(shí),那么可以直接瀏覽工具和服務(wù)部分。
這篇文章很長(zhǎng),但我們所涵蓋的大部分內(nèi)容都基于下面四個(gè)基本原則:
實(shí)際上搜索是一個(gè)綜合問(wèn)題:
質(zhì)量、度量和流程非常重要:
使用現(xiàn)有的技術(shù):
即使你買了,也需要了解細(xì)節(jié):
每款產(chǎn)品的搜索都不相同,而選擇則需要依賴于需求的許多技術(shù)細(xì)節(jié)。它有助于識(shí)別搜索問(wèn)題的關(guān)鍵參數(shù):
通過(guò)這些點(diǎn)來(lái)思考,可以幫助你在設(shè)計(jì)和構(gòu)建單個(gè)搜索系統(tǒng)組件時(shí)做出重要的選擇。
生產(chǎn)索引管道。
現(xiàn)在讓我們看一遍搜索子問(wèn)題列表。這些通常由形成管道的獨(dú)立子系統(tǒng)來(lái)解決。這意味著一個(gè)給定的子系統(tǒng)將消耗以前子系統(tǒng)的輸出,并為下列子系統(tǒng)生成輸入。
這導(dǎo)致了生態(tài)系統(tǒng)的一個(gè)重要特性:一旦你改變了上游子系統(tǒng)的工作方式,你就需要評(píng)估變化的影響,并可能改變下游的行為。
下面是你需要解決的重要的問(wèn)題:
索引選擇:
給定一組文檔(例如,整個(gè)Internet,所有的Twitter帖子,Instagram上的所有圖片),選擇一個(gè)可能更小的文檔子集,作為搜索結(jié)果可能值得考慮,并且只包括索引中的那些,丟棄其余部分。這樣做是為了使索引緊湊,而且?guī)缀跏钦坏模赃x擇要顯示給用戶的文檔。一些特殊類別的文件沒(méi)有被削減可能包括:
垃圾處理:
哦,所有不同的形狀和大小的搜索垃圾郵件!一個(gè)巨大的主題本身,值得單獨(dú)的指導(dǎo)。一個(gè)好的網(wǎng)絡(luò)垃圾分類概述。
不受歡迎的文檔:
域約束可能需要過(guò)濾:色情、非法內(nèi)容等。這些技術(shù)類似于垃圾郵件過(guò)濾,可能需要額外的啟發(fā)式。
重復(fù)的:
或接近重復(fù)的文件??梢酝ㄟ^(guò)本地敏感的散列、相似度度量、聚類技術(shù)甚至是clickthrough數(shù)據(jù)完成。一個(gè)很好的技術(shù)概述。
較低的文檔:
效用的定義在很大程度上依賴于問(wèn)題領(lǐng)域,因此很難推薦這里的方法。有些想法是:可能為您的文檔構(gòu)建一個(gè)實(shí)用程序函數(shù);heuristics可能起作用,或者例如一個(gè)只包含黑色像素的圖像不是一個(gè)有用的文檔;實(shí)用程序可以從用戶行為中學(xué)習(xí)。
索引結(jié)構(gòu):
對(duì)于大多數(shù)搜索系統(tǒng),文檔檢索是使用反向索引執(zhí)行的——通常稱為索引。
這篇文章并不是一篇教程,但是如果你想現(xiàn)在就構(gòu)建一個(gè)搜索體驗(yàn),這里倒是有一個(gè)簡(jiǎn)短的概述:
正如上面所說(shuō)的,如果你有一定的經(jīng)濟(jì)基礎(chǔ),可以選擇購(gòu)買現(xiàn)成的SaaS(下面列舉了一些評(píng)價(jià)不錯(cuò)的)。現(xiàn)有的服務(wù)適用于:
你的經(jīng)驗(yàn)是一個(gè)“連接”一個(gè)(你的服務(wù)或應(yīng)用有互聯(lián)網(wǎng)連接)。
它是否支持您需要的所有功能?這篇文章很好地闡述了你想要什么樣的功能。舉幾個(gè)例子,我至少要考慮一下:支持你正在搜索的媒體;實(shí)時(shí)索引支持;查詢靈活性,包括上下文相關(guān)的查詢。
考慮到語(yǔ)料庫(kù)的大小和預(yù)期的QpS,你能負(fù)擔(dān)得起未來(lái)12個(gè)月的費(fèi)用嗎?
服務(wù)是否能夠支持預(yù)期的流量,在所需的延遲范圍內(nèi)?如果您正在從應(yīng)用程序查詢服務(wù),請(qǐng)確保給定的服務(wù)能夠快速訪問(wèn)您的用戶所在的位置。
如果托管解決方案不適合您的需求或資源,您可能需要使用一個(gè)開(kāi)源庫(kù)或工具。如果有聯(lián)網(wǎng)的應(yīng)用程序或網(wǎng)站,我現(xiàn)在就選擇彈性搜索。對(duì)于嵌入式體驗(yàn),下面有多種工具。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺(tái),網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對(duì)作者和來(lái)源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請(qǐng)及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對(duì)此聲明的最終解釋權(quán)。