欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

搜索歷史基本原理實(shí)現(xiàn)即時(shí)自動(dòng)補(bǔ)全聯(lián)想搜索技巧

 更新時(shí)間:2023年02月13日 09:47:48   作者:全村最野的狗  
這篇文章主要為大家介紹了搜索歷史基本原理實(shí)現(xiàn)即時(shí)自動(dòng)補(bǔ)全聯(lián)想搜索技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

實(shí)現(xiàn)搜索歷史-[即時(shí)自動(dòng)補(bǔ)全&聯(lián)想搜索]

無論是新聞、內(nèi)容、還是電商平臺(tái),聯(lián)想輸入已經(jīng)成為搜索功能的標(biāo)配,早已不是什么新鮮事物。我們隨便打開一個(gè)搜索引擎或者是電商平臺(tái),當(dāng)我們在輸入框輸入拼音或者文字時(shí)就會(huì)看到輸入框下方彈出有意義的搜索建議,提示我們是不是想要輸入“以下”內(nèi)容,幫助我們補(bǔ)齊輸入或是修正錯(cuò)誤的輸入,優(yōu)化我們的搜索體驗(yàn)。

在上圖示例中,我們可以看到,輸入關(guān)鍵字 聯(lián)想搜索,Google 搜索會(huì)聯(lián)想到聯(lián)想搜索、elasticsearch聯(lián)想搜索,好處就是,我們無須輸入完整的關(guān)鍵字即可輕松完成針對這些 topics 的搜索。

今天我們實(shí)現(xiàn)的功能和聯(lián)想搜索有一點(diǎn)差別,我們是根據(jù)用戶隔離,基于個(gè)人搜索歷史的聯(lián)想搜索。

如何實(shí)現(xiàn)基于個(gè)人搜索歷史的聯(lián)想推薦

一個(gè)好的自動(dòng)補(bǔ)全器必須是快速的,并且在用戶鍵入下一個(gè)字符后立即更新聯(lián)想詞列表。自動(dòng)補(bǔ)全器的核心是一個(gè)函數(shù),它接受輸入的前綴,并搜索以給定前綴開頭的詞匯或語句列表。通常來說,只需要返回少量的數(shù)目即可。

架構(gòu)圖

詞匯表實(shí)現(xiàn)

實(shí)現(xiàn)方式有很多種,例如前綴樹實(shí)現(xiàn),有限狀態(tài)自動(dòng)機(jī)(DFA)實(shí)現(xiàn)等等。

這里采用Redis ZSET數(shù)據(jù)結(jié)構(gòu)快速實(shí)現(xiàn)。

  • Redis 有序集合和集合一樣也是 string 類型元素的集合,且不允許重復(fù)的成員。
  • 不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè) double 類型的分?jǐn)?shù)。redis 正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。
type zset
key search-history-common
key search-history-user:1
key search-history-user:2
key search-history-user:3

備注:

  • 常用搜索詞庫數(shù)據(jù)統(tǒng)計(jì)規(guī)則:定時(shí)取出所有人詞庫中排名靠前n位的搜索項(xiàng)并放入常用搜索庫中
  • 分?jǐn)?shù)值 = 原有分?jǐn)?shù)值*1.01+1.01 (為什么用一元函數(shù),因?yàn)榭梢宰尦S迷~和不常用詞更快的區(qū)分開)
  • 分?jǐn)?shù)值初始值為 1

實(shí)現(xiàn)原理

新增關(guān)鍵字操作

  • 直接添加 默認(rèn)score = 1
  • 添加失敗查詢score
  • 設(shè)置新score = score*1.1+1.1 (注意zset不能重新設(shè)置score
  • 緩存完成

# 計(jì)算新score
# 新score應(yīng)該 = score*1.1+1.1 但是 需要用ZADD,所以需要換算,(score*1.1+1.1)-score = a
ZADD key a member
# 化簡得到
ZADD key score*0.1+1.1 member
# 添加 member = 1 返回 score
# 如果存在則添加失敗 返回 0
ZADD key 1 member
# 獲取分,不存在返回 null
ZSCORE key member
# 對某個(gè)鍵加上增量
ZADD key 1 member

刪除關(guān)鍵字操作

  • 直接刪除
# 刪除成功返回 1,如果一個(gè)zset下沒有item, zset也會(huì)被自動(dòng)刪除
ZREM key member

查詢推薦列表操作

  • 全量查詢當(dāng)前用戶詞匯表
  • 使用String.contains 或者其他框架過濾出推薦詞
  • 返回推薦列表到前端

# 全量查詢 zset key(從小到大)
ZRANGE key 0 -1
member2
member
# 全量查詢 zset key(從大到?。?
ZRANGE key 0 -1 WITHSCORES
member2
2
member
6

以上就是搜索歷史基本原理實(shí)現(xiàn)即時(shí)自動(dòng)補(bǔ)全聯(lián)想搜索技巧的詳細(xì)內(nèi)容,更多關(guān)于搜索歷史自動(dòng)補(bǔ)全聯(lián)想搜索的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • git stash的正確用法詳解

    git stash的正確用法詳解

    這篇文章主要為大家介紹了git stash的正確用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 教你用PyTorch部署模型的方法

    教你用PyTorch部署模型的方法

    這篇文章主要介紹了用PyTorch部署模型的相關(guān)知識(shí),演示了使用PyTorch最近發(fā)布的新工具torchserve來進(jìn)行PyTorch模型的部署的相關(guān)知識(shí),需要的朋友可以參考下
    2022-02-02
  • Scratch3.0 頁面初始化同時(shí)加載sb3文件的操作代碼

    Scratch3.0 頁面初始化同時(shí)加載sb3文件的操作代碼

    今天通過本文給大家分享Scratch3.0 頁面初始化同時(shí)加載sb3文件的操作代碼,感興趣的朋友一起看看吧
    2021-08-08
  • 如何在網(wǎng)頁中顯示服務(wù)器時(shí)間

    如何在網(wǎng)頁中顯示服務(wù)器時(shí)間

    在網(wǎng)頁上顯示時(shí)間,如果取的是用戶本機(jī)的時(shí)間,由于用戶的時(shí)間往往不準(zhǔn)確,所以顯示的有問題。而服務(wù)器時(shí)間一般不會(huì)誤差太大,所以最好顯示服務(wù)器時(shí)間
    2013-03-03
  • vscode 左側(cè)擴(kuò)展活動(dòng)欄內(nèi)容消失的問題及解決方法

    vscode 左側(cè)擴(kuò)展活動(dòng)欄內(nèi)容消失的問題及解決方法

    vscode左側(cè)活動(dòng)欄默認(rèn)會(huì)有 一些內(nèi)容,今天一不小心,不知道怎么的,將部分內(nèi)容搞沒了,vscode 左側(cè)擴(kuò)展活動(dòng)欄內(nèi)容消失了怎么辦,下面給大家分享本文幫助大家快速解決,感興趣的朋友一起看看吧
    2021-08-08
  • 利用git克隆歷史版本(下載指定版本的代碼)

    利用git克隆歷史版本(下載指定版本的代碼)

    這篇文章主要介紹了利用git克隆歷史版本(下載指定版本的代碼),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 在IDEA(2020.2)中配置Git及使用Git的圖文詳解

    在IDEA(2020.2)中配置Git及使用Git的圖文詳解

    這篇文章主要介紹了在IDEA(2020.2)中配置Git及使用Git的圖文詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 風(fēng)中葉老師講述的學(xué)習(xí)方法(學(xué)習(xí)編程的朋友需要看)

    風(fēng)中葉老師講述的學(xué)習(xí)方法(學(xué)習(xí)編程的朋友需要看)

    風(fēng)中葉老師講述的學(xué)習(xí)方法(學(xué)習(xí)編程的朋友需要看),希望大家能按照說明的那樣,自己多動(dòng)手動(dòng)腦
    2008-10-10
  • Clion ROS開發(fā)環(huán)境設(shè)置技巧

    Clion ROS開發(fā)環(huán)境設(shè)置技巧

    這篇文章主要介紹了Clion ROS開發(fā)環(huán)境設(shè)置技巧,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Git的配置及文件傳輸方法圖文詳解

    Git的配置及文件傳輸方法圖文詳解

    這篇文章主要介紹了Git的配置及文件傳輸方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評論