search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

知乎的站內搜索還有救嗎? - 知乎

第一次在知乎上得到這麼多贊,有點擔憂,生怕自己說的不好,誤人子弟!

其實,我是一個從事互聯網搜索引擎開發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 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦