最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

搜索歷史基本原理實現(xiàn)即時自動補全聯(lián)想搜索技巧

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

實現(xiàn)搜索歷史-[即時自動補全&聯(lián)想搜索]

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

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

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

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

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

架構(gòu)圖

詞匯表實現(xiàn)

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

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

  • Redis 有序集合和集合一樣也是 string 類型元素的集合,且不允許重復(fù)的成員。
  • 不同的是每個元素都會關(guān)聯(lián)一個 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)計規(guī)則:定時取出所有人詞庫中排名靠前n位的搜索項并放入常用搜索庫中
  • 分?jǐn)?shù)值 = 原有分?jǐn)?shù)值*1.01+1.01 (為什么用一元函數(shù),因為可以讓常用詞和不常用詞更快的區(qū)分開)
  • 分?jǐn)?shù)值初始值為 1

實現(xiàn)原理

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

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

# 計算新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
# 對某個鍵加上增量
ZADD key 1 member

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

  • 直接刪除
# 刪除成功返回 1,如果一個zset下沒有item, zset也會被自動刪除
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

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

相關(guān)文章

  • git clone如何指定歷史版本

    git clone如何指定歷史版本

    這篇文章主要介紹了git clone如何指定歷史版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • git分支(branch)操作相關(guān)命令及分支命令的使用

    git分支(branch)操作相關(guān)命令及分支命令的使用

    這篇文章主要介紹了git分支(branch)操作相關(guān)命令及分支命令的使用的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度學(xué)習(xí)環(huán)境的方法

    win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度學(xué)習(xí)環(huán)境的方法

    這篇文章主要介紹了win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度學(xué)習(xí)環(huán)境,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 三招兩式 解決圖片盜鏈無法查看問題

    三招兩式 解決圖片盜鏈無法查看問題

    有些粗心大意的人轉(zhuǎn)貼時,簡單地把圖片復(fù)制了過來??扇绻摼W(wǎng)站的圖片設(shè)置為防止外部鏈接,我們遇到轉(zhuǎn)載的好帖,又找不到原出處,難道只有哀嘆的份么?
    2011-06-06
  • 淺談IDEA Scratch files萬能的臨時文件功能

    淺談IDEA Scratch files萬能的臨時文件功能

    這篇文章主要介紹了淺談IDEA Scratch files萬能的臨時文件功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Hash算法示例應(yīng)用場景解延伸探究

    Hash算法示例應(yīng)用場景解延伸探究

    這篇文章主要為大家介紹了Hash算法示例應(yīng)用場景解延伸探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 算法系列15天速成 第十二天 樹操作【中】

    算法系列15天速成 第十二天 樹操作【中】

    先前說了樹的基本操作,我們采用的是二叉鏈表來保存樹形結(jié)構(gòu),當(dāng)然二叉有二叉的困擾之處,比如我想找到當(dāng)前結(jié)點的“前驅(qū)”和“后繼”,那么我們就必須要遍歷一下樹,然后才能定位到該“節(jié)點”的“前驅(qū)”和“后繼”,每次定位都是O(n),這不是我們想看到的,那么有什么辦法來解決呢
    2013-11-11
  • 使用git?config?--global設(shè)置用戶名和郵件問題

    使用git?config?--global設(shè)置用戶名和郵件問題

    這篇文章主要介紹了使用git?config?--global設(shè)置用戶名和郵件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 簡單談?wù)凣it中的回滾操作

    簡單談?wù)凣it中的回滾操作

    大家在日常開發(fā)中,經(jīng)常會遇到需要將代碼切回到之前的某個版本的情況,有可能是需要將代碼回滾,也有可能需要查看之前的某個實現(xiàn)。遇到這樣的情況,該怎么做呢?下面通過這篇文章來學(xué)習(xí)下Git中的回滾操作,有需要的可以參考借鑒。
    2016-09-09
  • Postman設(shè)置環(huán)境變量的實現(xiàn)示例

    Postman設(shè)置環(huán)境變量的實現(xiàn)示例

    本文主要介紹了Postman設(shè)置環(huán)境變量的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

汨罗市| 治县。| 华宁县| 博客| 卫辉市| 彩票| 勃利县| 平远县| 枣阳市| 勐海县| 成都市| 平顶山市| 兴业县| 靖安县| 响水县| 同江市| 柞水县| 中宁县| 驻马店市| 望江县| 弥渡县| 岳西县| 大邑县| 临汾市| 阳春市| 沙雅县| 徐汇区| 永州市| 富源县| 阿拉善盟| 讷河市| 永州市| 玉田县| 连平县| 吉木乃县| 宁都县| 牟定县| 定日县| 梁河县| 石阡县| 尖扎县|