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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

热词搜索

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

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

熱詞:按照用戶搜索的關鍵字以及搜索到的結果數量進行排序,數量越多的越排到前面,從而得到熱詞。

實現分析

根據熱詞的定義,我們可以知道,熱詞是來源于用戶的搜索,那么就要記錄用戶的搜索關鍵字以及結果數量,然后

再排序得到熱詞。

說明:

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

?后天實現辦法:這里采用第一種方式

@Autowired private StringRedisTemplate redisTemplate; private static final String redisKey = "HOT:WORD"; //熱詞開始SearchResult result = new SearchResult(); //返回結果集實體類if (totalPages <= 1) { //需要查詢熱詞,按照得分倒序排序,獲取前5條數據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方式進行存儲,值所對應的得分是數據條數this.redisTemplate.opsForZSet().add(redisKey, key, count); //根據key獲取長度Long size = redisTemplate.opsForZSet().size(redisKey);//range按照評分從小到大排序System.out.println(redisTemplate.opsForZSet().range(redisKey,0,-1));//[aa, cc, dd, 華為, 手機]//根據下標刪除,評分從小到大System.out.println(redisTemplate.opsForZSet().removeRange(redisKey,0,size-2));//4System.out.println(redisTemplate.opsForZSet().range(redisKey,0,-1));//[手機]//熱詞結束

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

注釋:

Redis 有序集合(sorted set)

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

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

有序集合的成員是唯一的,但分數(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

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。