搜索引擎怎么做历史搜索词记录
来源:互联网 发布:网络不通怎么解决 编辑:程序博客网 时间:2024/04/27 15:21
经常性的看到在一些电商网站上的 搜索关键词记录,被其他网站给爬取到。然后去判断用户的行为习惯,作一些 乱七八糟的相关商品推荐或者
广告。不得不说,确实做的很人性化,这是怎么实现的。怎么获取到用户的搜索记录。
采用的是客户端的cookie,通过客户端的cookie记录用户经常搜索的关键字,然后就可以从用户经常搜索的关键字来
判断用户的兴趣。先看一下怎么设置用户查询。cookie在用户电脑中是以一种类似map键值对的形式存放,且只能存放字符串类型的对
象。通过response对象 增加cookie,代码如下:
/** * 用户把查询关键字返回到搜索记录中 */Cookie cookie=new Cookie("keyword", keyword);cookie.setMaxAge(60*60*24*30);//设置存放1个月的cookie,单位是秒//然后通过response对象的addcookie方法添加cookie使其生效response.addCookie(cookie);super.flushResponse(response, JsonWs.toJson(totalList));
通过request对象的getCookies方法得到一个包含所有Cookies的数组。
/** * 构建cookie中的keywords * @param keyword * @param request * @return * @throws UnsupportedEncodingException */ private String buildCookie(String keyword, HttpServletRequest request) throws UnsupportedEncodingException { keyword=StringUtils.StringFilter(keyword); String oldKeyWord = null; Cookie [] cookies = request.getCookies(); for(int i = 0; cookies!=null && i < cookies.length; i++){ if(cookies[i].getName().equals("keyword")){ oldKeyWord = URLDecoder.decode(cookies[i].getValue(),"UTF-8"); break; } } if(oldKeyWord==null) return keyword; //ArrayList<String> list1=new ArrayList<String>(Arrays.asList(oldKeyWord.split("\\,"))); //ArrayList 这个集合类中没有removeLast addFirst这两方法 LinkedList<String> list = new LinkedList<String>(Arrays.asList(oldKeyWord.split("\\,"))); if(list.contains(keyword)){ list.remove(keyword); }else{ if(list.size()>=10){ list.removeLast(); } } list.addFirst(keyword); StringBuffer sb = new StringBuffer(); for(String bid: list){ sb.append(bid + ","); } return sb.deleteCharAt(sb.length()-1).toString();//删除最后多余 的一个逗号
1 0
- 搜索引擎怎么做历史搜索词记录
- 通过刷新搜索词看三种主要搜索引擎区别
- 怎么做网站的搜索引擎优化
- IT历史:搜索引擎历史
- IT历史:搜索引擎历史
- 搜索引擎迈进四 404页面该怎么做?
- 网站优化:搜索引擎告诉你应该怎么做SEO
- 搜索引擎发展历史
- 搜索引擎发展历史
- 搜索引擎的发展历史
- 千万条记录,怎么做分页?怎么能提高性能?
- 搜索引擎优化历史的启示
- 怎么做一个对用户和搜索引擎都友好的网站
- 搜索引擎使用入门--如果我想开发chrome插件应该怎么做
- 搜索引擎---solr 怎么玩
- 查询历史销售记录
- 历史搜索记录保存
- localstorage历史搜索记录
- IOS游戏 与PHP服务器端的AES通讯加密
- 倒入appcompatv7项目各种报错问题汇总
- servlet生命周期,servlet与CGI的区别
- 关于error:Cannot assign to 'self' outside of a method in the init family
- 单元测试——NUnit测试简单实例
- 搜索引擎怎么做历史搜索词记录
- Linux: 使用 google chrome
- 浅析O2O崛起的原因与价值
- 在C#中使用扩展方法
- 问题解决:“无任何网络提供程序接受指定的网络路径”的解决方法
- poj 2828(线段树)
- C++ Template中的“替换失败并非错误”
- 并行编程中的设计模式
- 微信公众平台服务号开发者模式自定义菜单快速生成技巧