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

news/2024/5/18 14:12:18 标签: 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();//删除最后多余 的一个逗号



http://www.niftyadmin.cn/n/1375890.html

相关文章

excel学习笔记之二

excel学习笔记之二 import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util…

浅谈搜索引擎日志分析(SEO)

对于网站优化来说&#xff0c;搜索引擎日志分析是必不可少的一块&#xff0c;无论你是收录上百的小型网站&#xff0c;还是收录上百万的大中型网站&#xff0c;SEO要想做得好&#xff0c;都必需进行科学的日志分析&#xff0c;日志是发生在网站服务器上的所有事件的记录&#x…

域名中不能含有_

您输入的域名不符合域名注册规则&#xff0c;请重新输入 提示&#xff1a;域名可由英文字母&#xff08;a-z&#xff0c;不区分大小写&#xff09;、数字&#xff08;0-9&#xff09;、中文汉字以及连字符"-"&#xff08;即中横线&#xff09;构成&#xff0c;不能使…

VB.net WPF Combox 下拉列表 树形显示

前台UI页 <ComboBox HorizontalAlignment"Left" Margin"124,81,0,0" VerticalAlignment"Top" Width"300" Height"28" Name"treeUserOrgList" MaxDropDownHeight"1200" IsEditable"True" C…

Solr 地理空间搜索实践(Spatial Search)

在移动开发中越来越多的App都有周边搜索&#xff0c;有找附近的人的&#xff0c;附近的酒店&#xff0c;附近的餐馆的。。越来越多的人和企业都使用位置感知的搜索服务。创建位置感知搜索服务通常属于昂贵的专用解决方案的一部分&#xff0c;并且一般由地理空间专家完成。。本文…

Nutch相关框架安装使用最佳指南

一、nutch1.2二、nutch1.5.1三、nutch2.0四、配置SSH五、安装Hadoop Cluster&#xff08;伪分布式运行模式&#xff09;并运行Nutch六、安装Hadoop Cluster&#xff08;分布式运行模式&#xff09;并运行Nutch七、配置Ganglia监控Hadoop集群和HBase集群八、Hadoop配置Snappy压缩…

爬虫nutch

爬虫&#xff0c;基本可以分三类&#xff1a;1.分布式爬虫&#xff1a;Nutch2.JAVA单机爬虫&#xff1a;Crawler4j、WebMagic、WebCollector3. 非JAVA单机爬虫&#xff1a;scrapyNutch:分布式爬虫nutch背景&#xff1a; Apache基金会主席Hadoop之父Doug Cutting&#xff0c;发起…

nutch的定时增量爬取

译文来着&#xff1a; http://wiki.apache.org/nutch/Crawl 介绍&#xff08;Introduction&#xff09; 注意&#xff1a;脚本中没有直接使用Nutch的爬去命令&#xff08;bin/nutch crawl或者是“Crawl”类&#xff09;&#xff0c;所以url过滤的实现并不依赖“conf/crawl-u…