Suggestion(搜索建議)產品和技術

来源:http://www.cnblogs.com/Creator/archive/2016/06/15/5585943.html
-Advertisement-
Play Games

今天來簡單聊聊Suggestion產品 什麼是Suggestion服務? 一圖勝千言: 當你想要搜索某個長詞語或者一句話輸入部分時,Suggestion服務預測你極大可能的候選項,並羅列出來,供你選擇。 產品的意義: 1. 降低用戶搜索的輸入成本,用戶總是懶惰的,誰能讓用戶最懶惰還能幫他把事辦好,這 ...


今天來簡單聊聊Suggestion產品

什麼是Suggestion服務? 一圖勝千言:

當你想要搜索某個長詞語或者一句話輸入部分時,Suggestion服務預測你極大可能的候選項,並羅列出來,供你選擇。

產品的意義:

1. 降低用戶搜索的輸入成本,用戶總是懶惰的,誰能讓用戶最懶惰還能幫他把事辦好,這就是好的產品。當然如果真有一天能用腦電波搜索了,這個產品功能就沒意義了.

2. 為用戶提供提示,因為有部分用戶多一個長片語很有可能只能記住部分。如有部電影叫"心急吃不了熱豆腐",朋友A推薦給朋友B,只記得"心急吃不了啥"了

3. 提高搜索轉化率,用戶在任何過程中都有可能流失,打字打完"心急吃不了",一個朋友說別看這個了,看<冰與火之歌>吧,可能還差那最後3個字就能轉戰別的電影了

 

什麼樣的詞應該納入到Suggestion裡面去呢?

如果把所用所有的搜索記錄都作為suggestion服務,那用戶輸入完一個首碼後,就會出現滿屏的詞語;在這種場景下,儘量提供好用的suggestion而保持簡潔的結果的秘訣在於把控數量並提高轉化率,所以一般可以用雙重法則

1. 如果這個首碼的所有搜索詞不超過N個,按轉化概率從大到小排序

2. 如果超過N個, 放棄掉用戶轉化率小於a的搜索詞,按轉化概率從大到小排序

 

整體技術上怎麼實現呢?

如果你在做一個Suggestion總詞語量較小的產品. (<千萬級)

短平快,直接用小腳本掃每天的用戶搜索日誌,然後根據策略得出整個搜索詞表,放到Mysql中;

查詢直接用  select XXX from TABLE_XXX where SuggestionWords like {QUERY}% 進行查詢

訪問量大怎麼辦?

mysql 的查詢成為瓶頸,在前面加一層緩存,來存儲結果List即可.

訪問量極大怎麼辦?

這裡極大的意思時,一瞬間的某個詞語的緩存未命中(失效或者DB更新後delete)查詢會拖死Mysql

兩個思路

1. mysql加從庫 Master-Slave集群

2. 更新時主動生成緩存,讓前端查詢任何時刻都看不到緩存未命中

 

如果你在做一個Suggestion總詞語量較大的產品. (>千萬級)

類似的場景我之前遇到的是百度的帳號註冊時的Suggestion, N億的註冊用戶,新用戶上來了想註冊abcd這個帳號,已經被占用了,所以一般推薦abcd作為首碼能用的帳號如abcd1,abcd11等,類似的場景如功能變數名稱註冊服務商的推薦。

技術實現上可以用Tire樹,Tire樹的每個條邊就是每個詞,從非根節點到根節點經過的所有的邊組成了一個詞,如下圖的最長詞dcba

通過這種方式就能對海量基數詞進行Suggestion服務了。

另外tire樹的插入、查找、刪除的時間複雜度都是o(N),N為待插入、查找、刪除字元串的長度。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • sudo apt-get update sudo apt-get install chromium-browser sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-nonfree --insta ...
  • who——查看登錄用戶信息 命令所在路徑:/usr/bin/who 示例1: # who 顯示所有登錄的用戶,依次會顯示登錄用戶名、登錄類型、登錄時間,客戶端ip(如果是遠程登錄) tty —— 本地登錄 pts —— 遠程登錄 ...
  • linux系統中root用戶可以通過useradd命令添加新用戶,添加的用戶還需要使用passwd設置密碼 ...
  • C#複習① 2016年6月15日 08:19 Main Introduction of C# 簡單介紹C# 1. C# is very similar to Java (70% Java, 10% C++, 5% Visual Basic, 15% new) C#與Java好比失散多年的姐妹,長得像 ...
  • 剛開始學習C#的時候,就聽說CLR對於String類有一種特別的記憶體管理機制:有時候,明明聲明瞭兩個String類的對象,但是他們偏偏卻指向同一個實例。如下: String s1 = "Hello";String s2 = "Hello"; //s2和s1的實際值都是“Hello”bool same ...
  • 說明: 說明一點JS是直接支持Json的 所以可以直接如下寫: var a={"Age":28,"LastLoginTime":"2011-01-09 01:00:56","Name":"張三"}; 直接是json對象 而不必 寫成: var a=’{"Age":28,"LastLoginTime" ...
  • 分類:C#、VS2015 創建日期:2016-06-15 教材:(十二五國家級規劃教材)《C#程式設計及應用教程》(第3版) 一、本章要點 C#數據類型分兩大類:值類型、引用類型。 值類型:棧(Stack)中保存的就是數據的值。 引用類型:棧中保存的是堆(Heap)中對象的引用地址。 棧(Stack... ...
  • 五月中旬 .NET Core RC2 如期發佈,我們遂決定翻譯 ASP.NET Core 文檔。我們在何鎮汐先生、悲夢先生、張仁建先生和雷歐納德先生的群中發佈了翻譯計劃招募信息,並召集到一群小伙伴。我們從六月開始翻譯文檔,目前已完成前兩章,並將按計劃以連載的方式逐篇公佈。當翻譯計劃完成後,所有文檔將... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...