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

打包过程

将网站程序打成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的访问记录,如下:

[[email protected] 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原有的数据记录。

时间: 2024-11-10 07:59:42

学习日志---打造搜索引擎搜索提示的相关文章

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到输入的搜索词设置一个数组里存放搜素词,判断搜索词在数组里是否存在如果存在删除原来的词,重新将新词放在数组最前面如果不存在直接将新词放在数组最前面即可,然后循环数组显示结果即可 热门搜索实现原理,当用户搜索一个词时,可以保存到数据库,然后记录搜索次数,利用redis缓存搜索次数最到的词,过一段时间更新

五十 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到输入的搜索词设置一个数组里存放搜素词,判断搜索词在数组里是否存在如果存在删除原来的词,重新将新词放在数组最前面如果不存在直接将新词放在数组最前面即可,然后循环数组显示结果即可 热门搜索实现原理,当用户搜索一个词时,可以保存到数据库,然后记录搜索次数,利用redis缓存搜索次数最到的词,过一段时间更新

Python分布式爬虫必学框架Scrapy打造搜索引擎 学习教程

Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 1.创建搜索自动补全字段suggest 自动补全需要用到一个字段名称为suggest类型为Completion类型的一个字段 所以我们需要用将前面的elasticsearch-dsl操作elasticsearch(搜索引擎)增加suggest类型为Completion 注意:因为elasticsearch-dsl源码问题,设置字段为Completio

第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页

第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现搜索结果分页 逻辑处理函数 计算搜索耗时 在开始搜索前:start_time = datetime.now()获取当前时间 在搜索结束后:end_time = datetime.now()获取当前时间 last_time = (end_time-start_time).total_seconds()结束时间减去开始时间等于用时,转换成秒 from django.shortcu

第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能

第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html 创建自动补全字段 自动补全需要用到一个字段名称为suggest类型为Completion类型的一个字段 所以我们需要用

python分布式爬虫打造搜索引擎--------scrapy实现

最近在网上学习一门关于scrapy爬虫的课程,觉得还不错,以下是目录还在更新中,我觉得有必要好好的做下笔记,研究研究. 第1章 课程介绍 1-1 python分布式爬虫打造搜索引擎简介 07:23 第2章 windows下搭建开发环境 2-1 pycharm的安装和简单使用 10:27 2-2 mysql和navicat的安装和使用 16:20 2-3 windows和linux下安装python2和python3 06:49 2-4 虚拟环境的安装和配置 30:53 第3章 爬虫基础知识回顾

【Query处理学习笔记】搜索引擎查询推荐技术综述_中文信息学报2010_王斌

主要内容:对通用搜索引擎的查询推荐技术的方法.评价进行了总结 具体内容: "查询推荐"的不同英文叫法:Query Suggestion.Term Suggestion.Query Recommendation.Query Substitution.Query Rewriting 查询推荐的任务:找出和用户查询相似的query,以便更好地表达用户查询意图,供用户便捷输入 三种技术方法: 1. 基于文档的方法:通过处理query搜索出来的文档,以此作为反馈,进一步理解用户意图,扩充quer

聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎

第1章 课程介绍 介绍课程目标.通过课程能学习到的内容.和系统开发前需要具备的知识 1-1 python分布式爬虫打造搜索引擎简介 第2章 windows下搭建开发环境 介绍项目开发需要安装的开发软件. python虚拟virtualenv和 virtualenvwrapper的安装和使用. 最后介绍pycharm和navicat的简单使用 2-1 pycharm的安装和简单使用 2-2 mysql和navicat的安装和使用 2-3 windows和linux下安装python2和python

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys