码迷,mamicode.com
首页 > 其他好文 > 详细

搜索引擎怎么做历史搜索词记录

时间:2015-02-28 14:43:23      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:cookie   历史关键字   关键词   关键词记录   

      经常性的看到在一些电商网站上的 搜索关键词记录,被其他网站给爬取到。然后去判断用户的行为习惯,作一些 乱七八糟的相关商品推荐或者

广告。不得不说,确实做的很人性化,这是怎么实现的。怎么获取到用户的搜索记录。

      采用的是客户端的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();//删除最后多余 的一个逗号


搜索引擎怎么做历史搜索词记录

标签:cookie   历史关键字   关键词   关键词记录   

原文地址:http://blog.csdn.net/hu948162999/article/details/43984047

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!