日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

热词搜索

發(fā)布時間:2024/3/12 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 热词搜索 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需求:當無搜索結(jié)果或搜索結(jié)果只有一頁時,顯示搜索熱詞。最多顯示5個熱詞。

熱詞:按照用戶搜索的關(guān)鍵字以及搜索到的結(jié)果數(shù)量進行排序,數(shù)量越多的越排到前面,從而得到熱詞。

實現(xiàn)分析

根據(jù)熱詞的定義,我們可以知道,熱詞是來源于用戶的搜索,那么就要記錄用戶的搜索關(guān)鍵字以及結(jié)果數(shù)量,然后

再排序得到熱詞。

說明:

  • 用戶搜索數(shù)據(jù),首先進行Elasticsearch搜索
  • 在搜索完成后,進行判斷,是否需要查詢熱詞
  • 如果不需要,直返返回用戶數(shù)據(jù)即可
  • 如果需要查詢,則進行再Redis中查詢熱詞
  • ?對于用戶搜索詞的處理有兩種方案
  • 第一種方案,是在程序中進行處理,并且把搜索詞以及命中的數(shù)據(jù)數(shù)量存儲到redis中。該方案是同步進行。
  • 第二種方案,是將查詢信息先記錄到日志文件中,由后續(xù)的程序做處理,然后再寫入到Redis中。該方案
  • 是異步進行。

?后天實現(xiàn)辦法:這里采用第一種方式

@Autowired private StringRedisTemplate redisTemplate; private static final String redisKey = "HOT:WORD"; //熱詞開始SearchResult result = new SearchResult(); //返回結(jié)果集實體類if (totalPages <= 1) { //需要查詢熱詞,按照得分倒序排序,獲取前5條數(shù)據(jù)Set<String> set = this.redisTemplate.opsForZSet().reverseRange(redisKey, 0, 4);result.setHotWord(set);}// 處理熱詞long count = ((Math.max(totalPages, 1) - 1) * request.getSize()) + goodsList.size();// 采用zset方式進行存儲,值所對應的得分是數(shù)據(jù)條數(shù)this.redisTemplate.opsForZSet().add(redisKey, key, count); //根據(jù)key獲取長度Long size = redisTemplate.opsForZSet().size(redisKey);//range按照評分從小到大排序System.out.println(redisTemplate.opsForZSet().range(redisKey,0,-1));//[aa, cc, dd, 華為, 手機]//根據(jù)下標刪除,評分從小到大System.out.println(redisTemplate.opsForZSet().removeRange(redisKey,0,size-2));//4System.out.println(redisTemplate.opsForZSet().range(redisKey,0,-1));//[手機]//熱詞結(jié)束

在key=ab的時候,搜索結(jié)果如下圖,手機的count最大,因此排名第一

注釋:

Redis 有序集合(sorted set)

Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。

不同的是每個元素都會關(guān)聯(lián)一個double類型的分數(shù)。redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。

有序集合的成員是唯一的,但分數(shù)(score)卻可以重復

redis講解地址:https://www.runoob.com/redis/redis-sorted-sets.html

? ? ? ? ? ? ? ? ? ? ? ? ?https://www.cnblogs.com/yanan7890/p/6617305.html

? ? ? ? ? ? ? ? ? ? ? ? ?https://www.cnblogs.com/songanwei/p/9274348.html

?

https://www.jianshu.com/p/fdac76579aa1

https://blog.csdn.net/wangh92/article/details/80052607

?

總結(jié)

以上是生活随笔為你收集整理的热词搜索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。