溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

學(xué)習(xí)日志---打造搜索引擎搜索提示

發(fā)布時(shí)間:2020-07-17 21:43:24 來(lái)源:網(wǎng)絡(luò) 閱讀:347 作者:wukong0716 欄目:大數(shù)據(jù)

打包過(guò)程

將網(wǎng)站程序打成war包,使用clean package;

將war包放到服務(wù)器的tomcat上的webapps中;

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

加上如下編碼,更改編碼方式,防止亂碼

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

logs目錄下有tomcat的訪問(wèn)記錄,如下:

[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

這個(gè)是記錄的訪問(wèn),里面有輸入的記錄值,用于分析。

為了方便統(tǒng)計(jì),要改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觸發(fā)異步請(qǐng)求,如下:

使用的是jquery的autocomplete的插件,會(huì)在后臺(tái)向uri發(fā)送請(qǐng)求,服務(wù)器會(huì)返回一個(gè)json結(jié)構(gòu)數(shù)據(jù)的信息到前臺(tái),在頁(yè)面上展示。

<script type="text/javascript">
    $(document).ready(function(){
        $("#query").autocomplete({
            source : function(request, response){
                $.ajax({
                    //這里是請(qǐng)求服務(wù)器的處理類
                    url : "http://hadoop11:8080/web/suggest.do",
                    //這里的dataType是response回來(lái)的數(shù)據(jù)結(jié)構(gòu) 
                    dataType : "json",
                    //data是傳送過(guò)去的數(shù)據(jù)
                    data : {
                        query : $("#query").val()
                    },
                    //響應(yīng)成功的話就success
                    success : function(data){
                        //這里找的是action里的類,類里面的result屬性,是一個(gè)set集合
                        //這里返回的是一個(gè)集合,以json的結(jié)構(gòu)返回
                        //struts2里,加入到值棧的對(duì)象,會(huì)先對(duì)屬性做get賦值,再執(zhí)行要求的方法
                        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;
    }
    。。。。。。
    。。。。。

這里的類對(duì)應(yīng)上面的result。

需要的腳本

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

ui又依賴于:

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



在使用redis時(shí),使用sort排列來(lái)插入索引;

hGetAll 鍵,這個(gè)是列出該鍵下的所有值。

通過(guò)query傳過(guò)去一個(gè)值:由redis去查詢后返回一個(gè)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的操作可以熟悉下。

在實(shí)際開(kāi)發(fā)中,redis數(shù)據(jù)庫(kù)的更新可以逐個(gè)更新,在reduce的過(guò)程中去刪除redis原有的數(shù)據(jù)記錄。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI