站内搜索——(二)

1.效果演示:

2.思路:

  定义一个文本输入框,并在其下面定义一个div框,开始时候隐藏。当输入一个字母后就ajax异步请求数据,将返回的结果显示在div框中,并显示div框,点击div时将数据填充在文本输入框。

3.定义一个input输入框

                    <div class="form-group" style="position: relative;">
                        <input id="shangmian" type="text" class="form-control"
                            placeholder="Search" onkeyup="find(this);">
                        <div id="showDiv"
                            style="position: absolute; width: 170px; z-index: 3000; background-color: white; border: 1px solid; display: none;"></div>
                    </div>

4.当键盘按下松开时去异步请求数据

  对返回的数据进行处理,有结果时在下方显示一个div显示查询的结果,点击的时候讲结果写到上面的搜索框。

<script type="text/javascript">
            function overFun(obj){
                $(obj).css("background","#C0C1C5");
                }

            function  outFn(obj){
                $(obj).css("background","#fff");
                }
            function clickFn(obj){
                $("#shangmian").val($(obj).html());
                $("#showDiv").css("display","none");
                }
            function find(obj){
                //1.获取表单的值
                var word = $(obj).val();

                var content="";
                //2.异步ajax去数据库模糊查询
                $.post(
                        "/fenye/zhanneisousuo",    //请求地址
                        {"word":word},  //请求传递的参数,也可以是JSON
                        function(data){     //data表示传递回来的数据,只有在成功的时候才有
                            if(data.length>0){
                                for(var i=0;i<data.length;i++){
                                     content+="<div style=‘padding:5px;cursor:pointer;‘ onclick=‘clickFn(this)‘ onmouseover=‘overFun(this);‘ onmouseout=‘outFn(this);‘>"+data[i]+"</div>";
                                    }
                                $("#showDiv").css("display","block");
                                $("#showDiv").html(content);
                                }
                            },
                            "json"         //表示返回内容的格式,json会将传回来的自动解析成json对象
                );

                }

        </script>

5.后台处理异步请求数据

1. 控制层获取请求参数并将传上来的对象转为JSON对象

package web;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

import net.sf.json.JSONArray;
import service.UserService;

@WebServlet("/zhanneisousuo")
public class ZhanNeiSouSuo extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public ZhanNeiSouSuo() {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String word = request.getParameter("word");
        UserService us = new UserService();
        List<Object> objList=null;
        try {
             objList= us.findUserName(word);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
//        对返回的集合进行JSON转换,这个针对单个对象与集合有不同方法
        JSONArray fromObject = JSONArray.fromObject(objList);
        String string = fromObject.toString();
        System.out.println(string);

        //谷歌公司的,转一个或者集合都是这个方法
        Gson gson = new Gson();
        String json = gson.toJson(objList);
        System.out.println(json);
        response.setCharacterEncoding("utf-8");
        response.getWriter().write(json);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

2.service通过参数向dao请求数据

public List<Object> findUserName(String word) throws SQLException {
        List<Object> objList = userDao.findUserName(word);
        return objList;
    }

3.dao层模糊查询名字

    // 模糊查询用户名字,并将名字取出后存入一列中
    public List<Object> findUserName(String word) throws SQLException {
        QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "select name from user where name like ? limit 0,8";
        List<Object> objList = runner.query(sql, new ColumnListHandler("name"), "%" + word + "%");
        return objList;
    }
时间: 2024-10-24 22:02:12

站内搜索——(二)的相关文章

Lucene.Net 站内搜索

Lucene.Net 站内搜索 一  全文检索: like查询是全表扫描(为性能杀手)Lucene.Net搜索引擎,开源,而sql搜索引擎是收费的Lucene.Net只是一个全文检索开发包(只是帮我们存数据取数据,并没有界面,可以看作一个数据库,只能对文本信息进行检索)Lucene.Net原理:把文本切词保存,然后根据词汇表的页来找到文章 二  分词算法: //一元分词算法(引用Lucene.Net.dll)  一元分词算法 //二元分词算法(CJK:China Japan Korean 需要再

百度站内搜索应该注意哪些方面?

想过给自己网站添加一个站内搜索功能吗?几乎每个网站都会有站内搜索,因为他能够很好的提升用户体验,使用户快速的找到自己想要的内容!百度为站长们提供了一个站内搜索功能,而且使用它对网站的页面收录有一定的帮助!申请百度站内搜索很简单,按照他的步骤做就行!下面说说要注意的几点:     一.注意本地主机测试不能显示搜索结果页面 当你获取到代码并且把它写入网页后,如果你在本地测试的话你会发现不能显示搜索结果页面!因为百度站长平台验证的是你的网站,而且你新建搜索引擎填写的域名也是你网站的域名,这跟你本地主机

Lucene.net站内搜索1——SEO优化简介

声明:在这里,所谈的一切关于SEO的技术主要针对于我们开发人员. SEO (搜索引擎优化) SEO(搜索引擎优化)的目的(很多人都是通过搜索引擎找到我们的网站)是让搜索引擎更多的收录网站的页面,让被收录页面的权重更靠前,让更多的人能够通过搜索引擎进入这个网站 原理:蜘蛛会定时抓取网站的内容,发现网站内容变化.发现新增内容就反映到搜索引擎中 蜘蛛(spider) 爬网站:就是向网站发http get请求的客户端. SEO(搜索引擎优化*):让网站排名靠前,让网站更多的页面被搜索引擎收录.链接(外链

基于lucene.net 和ICTCLAS2014的站内搜索的实现1

Lucene.net是一个搜索引擎的框架,它自身并不能实现搜索,需要我们自己在其中实现索引的建立,索引的查找.所有这些都是根据它自身提供的API来实现.Lucene.net本身是基于java的,但是经过翻译成.ne版本的,可以在ASP.net中使用这个来实现站内搜索. 要实现基于汉语的搜索引擎,首先的要实现汉语的分词.目前网上大部分都是利用已经有的盘古分词来实现的分词系统,但是盘古分词效果不太好.在这里我把最新的ICTCLAS2014嵌入到Lucene.net中.Lucene.net中所有的分词

利用Solr服务建立的站内搜索雏形

最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下,然后在solr的管理界面中选择query,比如在q选项框中将"*:*"改写为"title:安徽",则在管理界面中就能看到搜索结果,可是这个与搜索引擎的感觉差远了,总感觉这些结果是被solr给套在他的管理界面中了,于是自己在网上搜索,也想整个站内搜索一样的东西,就算整不到

1.PHP站内搜索

PHP站内搜索:多关键字.加亮显示 1.SQL语句中的模糊查找 $sql = "SELECT * FROM `message` WHERE `content`like '%$k[0]%' and `content`like '%$k[0]%'"; 2.多个关键字搜索的原理和技巧 3.替换关键字高亮显示 $r[content] = preg_replace("/($_GET[key])/i", "<font color = red><b&g

利用Solr服务建立的站内搜索雏形---solr1

最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下,然后在solr的管理界面中选择query,比如在q选项框中将“*:*”改写为“title:安徽”,则在管理界面中就能看到搜索结果,可是这个与搜索引擎的感觉差远了,总感觉这些结果是被solr给套在他的管理界面中了,于是自己在网上搜索,也想整个站内搜索一样的东西,就算整不到那么炫,只要整到在solr的管

基于lucene.net 和ICTCLAS2014的站内搜索的实现2

分词系统建立完毕,这是基础也是核心,后面我们建立索引要用到分词系统. 下面依次讲解索引的建立,索引的查找. 分词系统建立完毕,这是基础也是核心,后面我们建立索引要用到分词系统.下面依次讲解索引的建立,索引的查找. 索引的建立采用的是倒排序,原理就是遍历所有的文本,对其进行分词,然后把分的词汇建立索引表.形式类似如下: 词汇          出现词汇的篇章1,篇章2,篇章3-- 建立索引的时候要注意这样的Document,Field这俩术语.Document代表的是一个文档,它里面包含一个或者多

PHP核心编程--站内搜索

一.         站内搜索 前台页面: 在index.php页面中添加一个表单,输入搜索框 后台页面: 将index.php另存为search.php 对于搜索的 分页关键代码: 高亮关键字 相关函数: 1)        Mysql_fetch_assoc, 2)        mysql_fetch_row 3)        mysql_fetch_array 4)        mysql_fetch_object(); 5)        mysql_num_rows($resul

B2C商城关键技术点总结(站内搜索、定时任务)

1.站内搜索 1.1Lucene.Net建立信息索引 1 string indexPath = @"E:\xxx\xxx";//索引保存路径 2 FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexPath), new NativeFSLockFactory()); 3 bool isUpdate = IndexReader.IndexExists(directory); 4 if (isUpdate) 5 {