3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
第一次在知乎上得到這麼多贊,有點擔憂,生怕自己說的不好,誤人子弟!其實,我是一個從事互聯網搜索引擎開發5年的碼儂,當然也不是造輪子,就是Java方向的利用Solr來進行二次開發。所以,從事的都是垂直領域特定搜索引擎開發:電子商務領域和招聘行業。針對知乎搜索,我提出的幾點可優化的方案,只是我在從業經歷中碰到的變態需求中的一部分。我回頭看這篇答案,有種「我原來是個搜索產品經理啊」的即視感。NO......NO..NO.!其實我是一個碼儂,驕傲的碼儂,這意味著,這些方案是經過我的實踐,至少Solr裡面都可以有比較好的實現,並不是信口開河,誤人子弟!心安了。說下這次更新的重點吧:一、先前說到的「含有優質答案的問題」,所謂優質答案是一種抽象的概念,需要一整套完備的答案評估體系,暫且稱為「答案等級評估系統」這個系統需要考慮多方面的因素,這方面經驗欠缺的我,只能腦洞大開,針對答案考慮:文本長短、文本關鍵字重複率、文本主題模型、答題時間(答題耗時)、點贊數、感謝、無幫助數、評論數、評論中答主的評論數、評論人數。再開一下:點贊的質量,就是不同用戶點贊的分量有所區別。二、知乎的先天優勢知乎從一開始就收集了暴多的個性信息,包括問題的話題歸納、用戶感興趣話題、用戶關注問題、用戶關注用戶。那麼通過話題就可以將問題和用戶形成有機結合,通過用戶這個樞紐,可以連接問題、答案、話題。這些數據都是個性化搜索引擎夢寐以求的數據,也是推薦引擎最好的原始輸入。三、將「答案等級評估系統」和「搜索引擎」結合起來,可以讓搜索結果有很多種可能拋棄以往的關鍵字相似度排序,給每個用戶不同的但是更好的排序體驗。讓用戶真正可以搜得到自己想要、感興趣的問題。四、多維度搜索拆分如果沒辦法在一個搜索輸入框做到按問題、按答案、按關注用戶答案進行搜索問題,那麼可以直接用多個tab標籤分離,多個輸入框。因為用戶進行搜索的時候,往往帶著目的性,我這次是要搜某個以往的問題,或者搜索某個用戶的回答。知乎現在是多維度合併,通過下來選擇來決定走向,但是用戶往往都是被培養了習慣,喜歡直接回車搜索,並不能達到效果。個人覺得,直接拆分更清晰!知乎現在是多維度合併,通過下來選擇來決定走向,但是用戶往往都是被培養了習慣,喜歡直接回車搜索,並不能達到效果。個人覺得,直接拆分更清晰! 原答案如下 首先,可以確定知乎搜索用的就是全文檢索引擎:這裡,我搜索的關鍵字是:「社交搜索引擎和社會化搜索引擎的區別是什麼?」,結果第一條命中了我複製的問題,而且做了關鍵字高亮。「和」,「的」,「是」這種沒有高亮,是因為在通常的分詞系統中是屬於停用詞或者無意義的詞,分詞器最終得到的最小分詞單元會捨棄這些詞。這裡,我搜索的關鍵字是:「社交搜索引擎和社會化搜索引擎的區別是什麼?」,結果第一條命中了我複製的問題,而且做了關鍵字高亮。「和」,「的」,「是」這種沒有高亮,是因為在通常的分詞系統中是屬於停用詞或者無意義的詞,分詞器最終得到的最小分詞單元會捨棄這些詞。所以,我有理由相信,知乎這個是包含分詞的全文檢索,絕對不是掃描匹配。以下先討論問題和答案的搜索,用戶和話題在另外的tab標籤,另談。那麼問題出在哪裡?排序是個大大的問題。先看一個圖片:我輸入關鍵字「搜索」,從結果來看,這個排序結果採用的是典型的包含TF/IDF演算法的空間向量排序模型。具體到這個結果,TF的意思就是包含「搜索」次數越多的標題,排序越靠前;DF就是包含「搜索」這個關鍵字的問題數,IDF就是這個問題數量的倒數,DF越大,IDF越小,對排序值的貢獻越小(主要是對於多關鍵字搜索有影響)。我輸入關鍵字「搜索」,從結果來看,這個排序結果採用的是典型的包含TF/IDF演算法的空間向量排序模型。具體到這個結果,TF的意思就是包含「搜索」次數越多的標題,排序越靠前;DF就是包含「搜索」這個關鍵字的問題數,IDF就是這個問題數量的倒數,DF越大,IDF越小,對排序值的貢獻越小(主要是對於多關鍵字搜索有影響)。還有一個參數對排序產生了影響,就是標題的長度,標題越長,某個關鍵字的重要性就會降低,相當於權重被分攤了。這個有點類似於PageRank演算法的中的一個小細節,鏈接的出度越大,每個出度得到的權重越小。以上這種排序方式屬於全文檢索中最基礎的排序,對於全網文獻來說比較有用,對於垂直領域搜索引擎來說,這個演算法有點太Low了,因為僅僅依靠文本自身的權重以及關鍵字出現次數,完全無法達到越來越變態的搜索需求,而且無法應對作弊。試想,某個問題重複多次包含某個關鍵字,那麼搜索該關鍵字是,這個問題肯定靠前。我覺得對於這個問題,其實很好解決。1、棄用基於空間向量模型排序演算法。知乎作為問答型社區,問題搜索的排序可以考慮問題的熱度、答案數、答案的文本內容、問題的標籤、問題的提問時間、問題的最後回答時間。可以將部分優質答案進行同步索引,可以支持通過答案搜索問題。我去搜索關鍵字「搜索」,你真以為我就想看「搜索?」這個問題?我肯定是想找搜索相關的問答,有更多優質回答的問題對我來說更重要。問題是否與關鍵字相關,必須基於答案是否與關鍵字相關,僅僅只有問題的問題,毫無意義。2、對於一定時間內提出的問題,必須優先排序;同時考慮一些沉睡的問題,讓含有優質答案的沉睡問題,排序靠前,喚醒活躍度(定時喚醒包含優質回答的問題);根據用戶的搜索歷史記錄,統計時下熱門關鍵字,熱門話題,對這些關鍵字的結果進行特殊處理。3、排序中,必須排除沒有優質答案的問題。用戶來搜索問題,不是為了搜索到鮮有答案的問題,然後來回答。而是通過關鍵字,搜索到以前看到過的感興趣的問題(一般問題中有讓他感興趣的答案),或者直接搜索答案,來定位問題。4、索引優質答案的好處是,關鍵字搜索結果更飽滿,列出標題的時候,列出命中答案的摘要,類似百度這種高亮摘要。可以滿足一大部分用戶搜索答案的需求。5、排序必須要個性化。很多關鍵字會很跨多個領域、話題,但是當前用戶不可能關注了所有話題。所以,我覺得,比較好的做法是將當前用戶關注的話題對應的問題排序靠前;當前用戶關注的用戶回答過的問題排序靠前;當前用戶直接關注的問題,排序必須靠前。當然,前提都是在保證關鍵字命中率的基礎之上。純粹靠搜索引擎來得到結果的時代已經過去了,搜索結果排序中加入個性化信息,才是一個比較好的方式。也就是,搜索引擎和推薦引擎進行有機結合。先回答這麼點吧。

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦