【热搜词方案】android/java热搜词方案设计

尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697

热搜词,即用户搜索频率很高的一些关键词

每个app基本上都会有搜索的功能,而热搜词即可表现出app用户最关注的是什么,又能达到引流的效果;对于用户而言,app给出的热搜词就是搜索频率最高的,而对于app的维护方,需要根据业务需求可控地对热搜词进行管理,比如有10条热搜词,其中有2-3条其实是管理员手动指定的(有的可能全部都是指定的),下面给出我在实际开发中运用到的一个热搜词方案。

效果一:

效果二:
:**

需要解决的问题

1、这种热搜效果一般是可控的,即前面几个是由后台管理员根据业务需求来设置的(有的完全有管理员来设置);之后的就是根据搜索的频率来排序(可控问题);

2、关键词相似度问题,比如“搬家”和“我要搬家”,50%的相似度。

设计方案

一、词条加入搜索榜条件:

1、至少两个中文(否则不加入);

2、该词条与现有词条相似度40%以下(否则相似度最高的搜索量+1);

3、第一、二名热搜由管理员设置,其他6条与该两条相似度不超过40%。

二、后台处理流程:

(A)、加入词条的流程:

1、获取用户搜索的词条,判断是否2个字中文以上;

2、判断该词条与数据库中的所有热搜词的相似度;

3、40%以下就将该词条加入数据库;

4、40%以上就将与该词条相似度最高的词条+1;

(B)、管理员设置词条流程:

1、加入前判断该词条与数据库中所有词条的相似度;

2、40%以下,加入数据库,并设置是否为管理员指定为Y;

3、40%以上,将数据库中与改词条相似度最高的作为管理员指定词条;

(C)、返回热搜词条的流程:

1、先获取数据库中由管理员设置的两条作为一、二名;

2、再获取其余按搜索量由高到低排序的6条词条;

3、合并返回;

相似度判断

设计方案出来了,这里最主要的问题就是判断相似度了,下面的一个判断字符串相似度的工具类(工具源自网络,有待优化,这里提供一种思路)即可解决这个问题:

public class StrSimilarityUtils {private static int compare(String str, String target) {int d[][]; // 矩阵int n = str.length();int m = target.length();int i; // 遍历str的int j; // 遍历target的char ch1; // str的char ch2; // target的int temp; // 记录相同字符,在某个矩阵位置值的增量,不是0就是1if (n == 0) {return m;}if (m == 0) {return n;}d = new int[n + 1][m + 1];for (i = 0; i <= n; i++) { // 初始化第一列d[i][0] = i;}for (j = 0; j <= m; j++) { // 初始化第一行d[0][j] = j;}for (i = 1; i <= n; i++) { // 遍历strch1 = str.charAt(i - 1);// 去匹配targetfor (j = 1; j <= m; j++) {ch2 = target.charAt(j - 1);if (ch1 == ch2) {temp = 0;} else {temp = 1;}// 左边+1,上边+1, 左上角+temp取最小d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + temp);}}return d[n][m];}private static int min(int one, int two, int three) {return (one = one < two ? one : two) < three ? one : three;}/*** 获取两字符串的相似度** @param str* @param target* @return*/public static float getSimilarityRatio(String str, String target) {return 1 - (float) compare(str, target) / Math.max(str.length(), target.length());}
}

用法:

String str = "搬家";
String target = "我要搬家";
System.out.println("similarityRatio=" + StrSimilarityUtils.getSimilarityRatio(str, target));

运行结果:

尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697

【热搜词方案】android/java热搜词方案设计相关推荐

  1. java 热更新class_线上java热更新代码实现

    游戏上线后难免会有功能性bug,这些bug很多只做一些小的改动即可修复.设想假如每次有bug修复之后,都要重启服务器,势必会导致部分玩家流失,对游戏产生不好的影响.在这个背景下,代码热更新还是很有必要 ...

  2. 技术干货 | 深度解构 Android 应用面临紧急发版时的救星方案:mPaaS 热修复——DexPatch

    简介: 关于 Android 热修复方案--DexPatch 的介绍与使用说明 方案介绍 为了解决 Native 模块上线后的问题,mPaaS 提供了热修复功能,实现不发布客户端 apk 场景下的热修 ...

  3. 基于3s和地学知识的MH370搜救方案编制

    本文章仅为课程作业,不做具体参考,无实际意义. 基于3s和地学知识的MH370搜救方案编制 0.引言 2014年3月8日,马航MH370航班在从马来西亚吉隆坡飞往中国北京的航班上从空中交通管制雷达上消 ...

  4. JAndFix: 基于Java实现的Android实时热修复方案

    简述 JAndFix是一种基于Java实现的Android实时热修复方案,它并不需要重新启动就能生效.JAndFix是在AndFix的基础上改进实现,AndFix主要是通过jni实现对method(A ...

  5. 热修复系列之一----Android 热修复原理篇及几大方案比较

    热修复说白了就是"即时无感打补丁",比如你们公司上线一个app,用户反应有重大bug,需要紧急修复.2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也 ...

  6. python爬虫微博24小时热搜_Python爬虫之微博热搜

    最近自学了Python爬虫,手痒痒,想爬点东西,所以就有了这篇文章.由于目前本人技术有限,如有纰漏,欢迎批评指正:如有良策,也欢迎赐教. 思路 1.首先,当然是打开微博热搜,F12观察下网页结构.令人 ...

  7. Android APP热更新中的插件化(Hook技术:反射或动态代理),Demo (2)

    修改AAPT,资源分区,用于Android插件化- https://github.com/BaoBaoJianqiang/AAPT -- Android下的挂钩(hook)和代码注入(inject) ...

  8. Android热修复之 阿里开源的热补丁

    1.概述   上一期讲到Android热修复之 - 收集崩溃信息上传至服务器,我们获取到用户手中上线的崩溃信息上传到服务器后该怎么办?如果直接发布版本要用户去下载肯定不乐意.这一期我们来看一下怎么去打 ...

  9. 【腾讯Bugly干货分享】QFix探索之路—手Q热补丁轻量级方案

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ff5832bb8fec206ce2185d 导语 QFix 是手Q团队近期推 ...

最新文章

  1. 多尺度目标检测--Scale-Aware Trident Networks for Object Detection
  2. 专访高磊:安卓APK安全加固的引领者
  3. 为何优秀的Java程序员如此难招?
  4. 字符串php手册,php知识点复习之字符串
  5. Linux中的软硬连接
  6. android各个版本市场占有率(2013年3月)
  7. 高温保护_耐高温保护膜可以用在哪一方面?
  8. Access数据库迁移到MS SQL Server数据库
  9. 同花顺数据同步到mysql_同花顺数据库怎么购买,同花顺ifind账号
  10. iOS 9 真机调试
  11. 基于JAVA的教务排课系统.rar(源码+截图+数据库)
  12. php输出cad文件,AutoCAD 二次开发 输出为WMF 或BMP文件
  13. 从零开始写一个武侠冒险游戏-4-第一次整合
  14. 这是 qq整人代码 VB
  15. 【笔记】win10打开注册表的三种方式
  16. 自动驾驶域控制器话题下的软件系统设计和研发管理
  17. 漏洞管理平台-洞察贰
  18. Python 抓取淘宝联盟优惠券
  19. 存在的多个逻辑与()和逻辑或(||)的执行顺序
  20. 计算机课件制作软件,浅谈计算机课件制作

热门文章

  1. PPT如何制作形状动画?
  2. 中英文之间的空格处理
  3. 计算机专硕毕业论文写什么,最新硕士毕业论文进度安排怎么写
  4. C# LeetCode刷题 - Leetcode 306. 累加数 - 题解
  5. java打字小游戏_java实现打字游戏小程序
  6. 用R语言开始量化投资
  7. mysql数据长度过长,1406 - Data too long for column ‘express_company‘ at row 1
  8. 网络 4.0 防火墙概述
  9. Android 中 使用 Google Paly 支付 简介
  10. 70万行代码、历时20年,一名开发人员写出的史诗般的计算机程序