必威体育Betway必威体育官网
当前位置:首页 > IT技术

热词搜索

时间:2019-11-04 14:42:14来源:IT技术作者:seo实验室小编阅读:56次「手机版」
 

搜索词

需求:当无搜索结果或搜索结果只有一页时,显示搜索热词。最多显示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));//4
            System.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

文章最后发布于: 2019-07-29 12:24:31

相关阅读

每天5800搜索量竞争度0的淘宝导航关键词分析

最近一朋友想做个淘宝导购站,让我帮忙找下关键词,老样子先看下拉框再看相关搜索、百度指数,最终决择在关键词推荐,最后一步的时候发现

全球搜索引擎Top10 可惜很多人只用过第四个

在互联网发达的今天,每当我们遇到不懂的问题,首先问的就是百度,但是有时候度娘给出的并不是我们想要的答案或者更本搜不到答案,怎么办

淘宝搜索关键词排行榜在哪里?寻找淘宝关键词的渠道有哪

淘宝宝贝的关键词影响着宝贝排名,很多卖家都会设置关键词都会搜索关键词排行榜,但是不知道淘宝搜索关键词排行榜在哪里?寻渠道有哪

小红书网页版如何搜索?

小红书相信大家都不陌生吧,小红书是时下一个比较红的网购平台,就和聚美优品、拼多多一样。不过,对于小红书大家还是有些怀疑的,小红书

透过人肉搜索引擎看威客

人肉搜索vs电脑搜索 人肉搜索引擎其实就是在一个社区里面提出一个问题,由人工参与解答而非搜索引擎通过机器自动算法获得结果的搜

分享到:

栏目导航

推荐阅读

热门阅读