solr自动提示 - jquery ui autocomplete

需求: 搜索框中 输入部分关键词之后,有下拉联想提示.选中提示,使用鼠标或者使用enter键,则触发搜索功能.没有选择搜索提示,使用部分输入关键词作为搜索,直接使用enter键也能触发搜索功能.整个过程的实现,采用了jquery的跨域调用方式.

 val = $("#retrival").val();
            retrival(val == ‘‘ ? "*:*" : val);
        });
        //绑定回车 搜索
        $("#retrival").keydown(function(event) {
            if (event.keyCode == 13) {
                $(".ui-helper-hidden-accessible").empty();
                var val = $("#retrival").val();
                retrival(val);
            }
        });
        $("#retrival")
                .autocomplete(
                        {
                            source : function(request, response) {
                                var suggestUrl = baseURL + "/suggest?" + "q="
                                        + request.term + "&wt=json";
                                suggestUrl = encodeURI(suggestUrl);
                                $
                                        .getJSON(
                                                suggestUrl + "&json.wrf=?",
                                                function(data) {
                                                    //结果数据  data 为json对象
                                                    if (data.spellcheck.suggestions.length > 1) {
                                                        response(data.spellcheck.suggestions[1].suggestion);
                                                    }
                                                });
                            },
                            minLength : 1,
                            select : function(event, ui) {
                                //alert(‘select‘);
                                console.info(event);
                                $(".ui-helper-hidden-accessible").empty();
                                if (event.which != 13) {// 防止与 $("#city").keydown冲突
                                    retrival(ui.item ? ui.item.label
                                            : this.value);
                                }
                            }
                        });
    });
</script>
</head>
<body>

    <div class="ui-widget">
        <label>检索: </label> <input id="retrival" /> <input id="commit"
            type="button" value="提交" />
    </div>
    <div id="result"></div>
</body>
</html>
<!doctype html>
<html>
<head>
<meta name="content-type" content="text/html; charset=gbk" />
<title>solr autoComplete </title>
<link rel="stylesheet" href="lib/jquery-ui.css">
<script src="lib/jquery-1.11.2.js"></script>
<script src="lib/jquery-ui.js"></script>
<script type="text/javascript" src="lib/json3/json3.min.js"></script>
<style>
#city {
    width: 25em;
}
</style>
<script>
  var  baseURL = "http://172.21.0.31:13131/solr/jlyd";
  var search =
  $(function() {
    // 检索函数
    function retrival(keyword ) {
        //
        $("#result").empty();    // 如果后台没有设置json返回格式的话,这里一定要设置json返回的格式.
        var selectURL = encodeURI(baseURL+"/select?"+"q="+(keyword==‘‘? "*:*" : keyword)+"&wt=json");
        $.getJSON(selectURL + "&json.wrf=?", function(data) {
            // 对查询结果处理
            var da = data.response.docs;
            if(da.length>0){
                for(var i=0;i<da.length;i++){
                    $("#result").append("<li>"+"("+(i+1)+")  "+da[i].doctitle+"</li>");
                }
            }else{
                $("#result").html("没有结果");
            }
        });
    }

    //搜索按钮触发
    $("#commit").click(function(){
        $(".ui-helper-hidden-accessible").empty();
        var val = $("#retrival").val();
        retrival(val==‘‘? "*:*" : val);
    });
    //绑定回车 搜索
    $("#retrival").keydown(function(event){
        if(event.keyCode == 13){
            $(".ui-helper-hidden-accessible").empty();
            var val = $("#retrival").val();
            retrival(val);
        }
    });
    $( "#retrival" ).autocomplete({
      source: function( request, response ) {
        var suggestUrl = baseURL+"/suggest?"+"q="+request.term+"&wt=json";
        suggestUrl = encodeURI(suggestUrl);
        $.getJSON(suggestUrl + "&json.wrf=?", function(data) {
            //结果数据  data 为json对象
            if(data.spellcheck.suggestions.length>1){
                 response(data.spellcheck.suggestions[1].suggestion);
            }
        });
      },
      minLength: 1,
      select: function( event, ui ) {
          //alert(‘select‘);
          console.info(event);
          $(".ui-helper-hidden-accessible").empty();
          if(event.which != 13){// 防止与 $("#city").keydown冲突
              retrival( ui.item ? ui.item.label : this.value);
          }
      }
    });
  });
  </script>
</head>
<body>

    <div class="ui-widget">
        <label>检索: </label> <input id="retrival" /> <input id="commit"
            type="button" value="提交" />
    </div>
    <div id="result"></div>
</body>
</html>

效果:

  

时间: 2024-10-17 10:37:55

solr自动提示 - jquery ui autocomplete的相关文章

solr进阶八:jQuery UI Autocomplete与solr搜索结合

大致的流程: 页面捕获到文字 --> 传到servlet(Controller)层,servlet层调用后台 --> 后台根据servlet层传来的参数进行动态从solr中获取数据 --> solr 数据返回到servlet层,解析 --> 展现到页面上. 在solr里面新建一个core,在MySQL数据库里面新建一个表,从这个表导入数据到solr的core中,具体步骤可以上网查或者看我前面的教程. SQL语句: SET FOREIGN_KEY_CHECKS=0; -- -----

jQuery UI Autocomplete是jQuery UI的自动完成组件

支持的数据源 jQuery UI Autocomplete主要支持字符串Array.JSON两种数据格式. 普通的Array格式没有什么特殊的,如下: ? 1 ["cnblogs","博客园","囧月"] 对于JSON格式的Array,则要求有:label.value属性,如下: ? 1 [{label: "博客园", value: "cnblogs"}, {label: "囧月", v

jQuery UI Autocomplete自动补全

项目上用到solr搜索引擎,在输入框输入字符的时候,想做到类似百度的效果,下拉框出现10个建议词条,为此,用上了jQuery UI Autocomplete 做自动补全 jsp页面样例: <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/view

可输入自动匹配Select——jquery ui autocomplete

1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <title>jQuery UI Autocomplete - Combobox</title> 6 <link rel="stylesheet" href="http://code.jquery.com/ui/1.

Jquery ui autocomplete简单api

重要说明:与配置选项类似,Autocomplete插件的方法也不是直接调用,而且通过autocomplete()方法进行间接调用.例如: $("#title").autocomplete( "方法名", "参数1", "参数2" ); Autocomplete的方法列表 close() 关闭自动完成显示的菜单. $( "#title" ).autocomplete( "close" );

jquery ui autocomplete 实现点击文本框,出现所有查询信息效果

直接看代码 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Autocomplete - Default functionality</title> <link rel="stylesheet" href="../../themes/base/jqu

jquery ui autocomplete ajax返回数据自定义显示

1.body里面的内容 <input type="text" class="inputTxt" id="txtJigou" autocomplete="off"/> 2.引入jquery.ui.min.js和他的样式 3.js代码如下<script type="text/javascript"> $(function(){ $("#txtJigou").autoc

jquery UI autocomplete 提示下拉

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> <script type="text/javascript" language="javascript" src="js/trirand/jquery-1.11.1

jquery ui autoComplete自动完成

官网:http://jqueryui.com/autocomplete 最简单的形式: var availableTags = [ "ActionScript", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure",  ]; $( "#tags" ).autocomplete({ source: