温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

学习日志---打造搜索引擎搜索提示

发布时间:2020-07-17 21:43:24 来源:网络 阅读:579 作者:wukong0716 栏目:大数据

打包过程

将网站程序打成war包,使用clean package;

将war包放到服务器的tomcat上的webapps中;

在conf的目录下更改server.xml文件:

加上如下编码,更改编码方式,防止乱码

URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"                connectionTimeout="20000"                redirectPort="8443" />

logs目录下有tomcat的访问记录,如下:

[root@hadoop11 logs]# ls catalina.2015-08-14.log  host-manager.2015-08-14.log  localhost_access_log.2015-08-14.txt catalina.out             localhost.2015-08-14.log     manager.2015-08-14.log
localhost_access_log.2015-08-14.txt

这个是记录的访问,里面有输入的记录值,用于分析。

为了方便统计,要改server.xml里的,修改的是日志文件,如下:

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"                prefix="hadoop11_access_log." suffix=".txt" fileDateFormat="yyyy-MM-dd-HH-mm"                pattern="%h %l %u %t &quot;%r&quot; %s %b" />

prefix是前缀,suffix是后缀,fileDataFormat是频率



使用ajax触发异步请求,如下:

使用的是jquery的autocomplete的插件,会在后台向uri发送请求,服务器会返回一个json结构数据的信息到前台,在页面上展示。

<script type="text/javascript">     $(document).ready(function(){         $("#query").autocomplete({             source : function(request, response){                 $.ajax({                     //这里是请求服务器的处理类                     url : "http://hadoop11:8080/web/suggest.do",                     //这里的dataType是response回来的数据结构                      dataType : "json",                     //data是传送过去的数据                     data : {                         query : $("#query").val()                     },                     //响应成功的话就success                     success : function(data){                         //这里找的是action里的类,类里面的result属性,是一个set集合                         //这里返回的是一个集合,以json的结构返回                         //struts2里,加入到值栈的对象,会先对属性做get赋值,再执行要求的方法                         response($.map(data.result, function(item){                             return {value:item}                         }));                     }                 });             },             minLength:1,         });     }); </script>
public class SearchAction extends ActionSupport {     String text;     String query;     Set<String> result;          public Set<String> getResult() {         //this.result = RedisTool.zrevrange(query, 0, 5);         result = new HashSet<String>();         result.add("aaa");         result.add("子");         return result;     }     。。。。。。     。。。。。

这里的类对应上面的result。

需要的脚本

<script type="text/javascript"     src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>

ui又依赖于:

<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>



在使用redis时,使用sort排列来插入索引;

hGetAll 键,这个是列出该键下的所有值。

通过query传过去一个值:由redis去查询后返回一个set集合。

public static Set<String> zrevrange(String text, int i, int j) {         // TODO Auto-generated method stub         try{             CreateJedisObj();             //hadoop_users                          return jedis.zrevrange(text, 0, 5);                          }catch(Exception e){                 e.printStackTrace();                 jedis = null;                 return null;             }     }


redis的操作可以熟悉下。

在实际开发中,redis数据库的更新可以逐个更新,在reduce的过程中去删除redis原有的数据记录。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI