垂直搜索引擎的 suggest 設計,最重要的是什麼呢?
1. suggest的定位:在用戶輸入關鍵詞的時候,起到提示作用,減小用戶輸入量,提高用戶輸入準確度。能夠智能的預測用戶心中的期望;
2. 備挖掘基礎數據對於suggest是很重要的,一般要來源於用戶實際的輸入,讓程序能夠藉助歷史數據預測用戶意圖;
3. 要關注被挖掘數據的來源、數據量、多樣性、更新頻率等
4. suggest是交互性很強的產品。隨著用戶的輸入,呈現不同的內容。而不同用戶輸入的行為是不一樣的。一般而言,中文用戶輸入的時候,由於輸入法的特點,用戶輸入是以「概念」為單位的,而一次性輸入概念的長短取決於用戶輸入技巧。的比如輸入「北京市朝陽區」,技巧差的人可能先輸入北京市,然後再輸入朝陽區,這時suggest有機會在北京市這個層級就作出推薦。技巧更差的,可能一個字一個字的輸入,這時候suggest介入的機會就更多了。但是顯然,輸入內容越多,用戶表達的需求就越明確,推薦出來的內容越可能符合用戶需求,但是意義也就越小,因為沒有起到節省用戶時間的目的。因此在輸入的前幾個字,就應該儘可能的貼近用戶需求,一種方式是覆蓋熱點,打概率,覆蓋大多數用戶,更討巧的方式是所謂個性化推薦。這些思考適用於任何用戶輸入,機器推薦的場景,比如搜索框,比如瀏覽器地址欄等等。這點google chrome做的極好,搜狗瀏覽器也做了一些很好的嘗試
5. suggest的質量評測重點在於數據量、數據質量和查詢邏輯,此外,以吞吐量為代表的性能指標也很重要。
6. 需要注意的是,對於新聞、網頁、視頻這類全文檢索類型的查詢,suggest盡量採用用戶輸入的query記錄,因為基於歷史的推薦是最靠譜的。但是對於資料庫查詢,也即有最佳查詢方式的產品(比如地圖查詢、詞典查詢等),要具體分析,不能完全依賴於用戶的歷史查詢。應該根據用戶輸入,進行意圖判斷,給用戶提示更接近用戶意圖的查詢推薦,這個推薦不一定只來自歷史query記錄,比如可以像地圖搜索那樣,向用戶推薦POI數據點。庫結構的數據另一個特點是有層級,比如分類樹,比如地圖數據的省市區等,這些特點在suggest設計的時候要予以考慮
7. 「冷啟動」是個問題,也即最初可能沒有任何用戶行為數據。這時候需要結合熱點挖掘的方式給用戶一個最初的感受,不過需要很好的把控質量,並進行灰度放量,AB test
8. 當無法得到初始query的時候,需要想辦法。比如地圖使用POI數據,還因為用戶查詢poi數據的比例很高,且有這方面的數據可供挖掘
suggest的一些質量評測點
1. 垃圾詞過濾。比如帶無意義符號的查詢串要進行處理2. 意義重複的query,比如「天上人間照片」和「天上人間的照片」屬於同意3. 在去重複基礎上考慮多樣性
4. 匹配模式,前綴匹配、後綴匹配5. 中英文(拼音)混合串的質量6. 錯別字智能糾錯7. 政治、黃詞、零結果等的過濾8. 新聞類檢索需要引入時新性
9. 如果有類似阿拉丁的直達區,考慮直達區策略以及展示樣式10. 數據方面主要看CTR。但是要注意,用戶只要輸入query,就會調用suggestion,多一個查詢詞,suggest就又檢索一次,如果以單純的檢索量做分母是不合適的。應該以一次完整的檢索行為作為分母,以點擊提示詞的次數為分子。重要的是你做的是垂直搜索的suggestion, 用戶輸入的關鍵詞會相對集中,你又有很多這個領域內的知識積累,如何利用這些提高用戶尋找的效率?
suggestion 出現在互聯網上已經有超過10年了,像zhihu頂部的搜索是否也可以認為是一種suggestion的創新?
總之,suggestion的目的是為了讓用戶更少的輸入,讓用戶搜索和尋找更便捷。想想看。最近一直在搞這個,採用suggest的模型為改進的trie樹,包含前綴匹配和後綴匹配,但消耗資源較大;未來詞庫量增加後,考慮用磁碟上建索引的方式解決,這個借鑒了lingpipe的suggest,模型採用的改進後的編輯距離
看來LZ或許是騰訊的Map經理,關於地圖搜索的suggestion減少查詢次數的一個方法是不是可以通過判斷輸入是否是地名詞來做,當然這需要後台地名詞庫,這樣檢索明顯能降低次數。
最重要的是CTR阿
推薦閱讀:
※搜索引擎的工作原理是什麼?
※周鴻禕似乎在商場四面樹敵人人喊打,那為什麼奇虎 360 依然發展得那麼好?
※如何看待豌豆莢改版加入生活服務搜索??
※人肉搜索軟體是什麼原理?
※在ElasticSearch中,集群(Cluster),節點(Node),分片(Shard),Indices(索引),replicas(備份)之間是什麼關係?