首页 新闻 会员 周边

百度搜索框是用什么原理实现的?求解!!!

0
[待解决问题]

本人最近做一个项目,需要类似于百度搜索框的功能。

我用的是json 感觉下拉索引太慢啦,有没有什么比较好的方法。。。求解

泉州做网站的主页 泉州做网站 | 菜鸟二级 | 园豆:202
提问于:2012-04-01 23:18
< >
分享
所有回答(7)
1
artwl | 园豆:16736 (专家六级) | 2012-04-02 08:19
0

人家是php做的,你既然是.net平台下,你用Lucene.Net用这个开源项目就最好了。

Halower | 园豆:1723 (小虾三级) | 2012-04-02 09:55
0

下拉框 你要确定 索引的查询数量范围。你看百度智能感知 也不是加载所有的。一般给 10~15条就够了。JSON 传输数据异步请求 是没错的。JQUERY有这样的插件 你可以选择。框架方面 建议用 MVC 直接可以通过路由机制 映射到 CLASS 类中了.

v薛定谔的猫v | 园豆:202 (菜鸟二级) | 2012-04-02 12:03
0

在客户端给用户的提示数量不应过多。无论哪种格式的数据,也无论哪种算法,差异基本上是没有的。至少感觉不出来的。

lucika.zh | 园豆:62 (初学一级) | 2012-04-02 19:13
0

这个呀,简单的,就用SQL语句吧,在SQL SERVER 中查询,然后利用repeat 展现出来,

zhengyingcan | 园豆:12 (初学一级) | 2012-04-02 20:50
0

关注。。。

KivenRo | 园豆:1734 (小虾三级) | 2012-04-03 07:35
0

在.net C#下

要用到jquery的autocomplete(自动完成,网上有的),C#的一般处理程序ashx文件(特点:添加新的ashx,不能复制原来的ashx文件,一定要重新新建一个ashx文件,用来处理数据的。)

aspx 文件主要代码

//导入jquery autocomplete

<script src="../js/jquery.ui.autocomplete.js" type="text/javascript"></script>

//导入jquery autocomplete 样式

    <link href="../css/jquery.autocomplete.css" rel="stylesheet" type="text/css" />

//js代码

<script type="text/javascript">

     //页面上的txtKeyWords文本框

  var txtKeyWords = "#<%=txtKeyWords.ClientID %>";

        function findValue(li) {
            if (li == null) return alert("No match!");
            if (!!li.extra)
                var sValue = unescape(li.extra[0]);

        }
        function selectItem(li) {
            findValue(li);
        }

        $(document).ready(function() {

  //SearchKey.ashx是你创建的C#一般处理程序文件

            $(txtKeyWords).autocomplete("SearchKey.ashx",
          {
              delay: 5,

  //最小的输入字符数,就是输入2个长度的字符就会提示
              minChars: 2,
              matchSubset: 1,
              cacheLength: 1,
              onItemSelect: selectItem,
              onFindValue: findValue,
              autoFill: true,

    //文本下面的最大显示记录数
              maxItemsToShow: 20,
              select: function(event, ui) {
                  value = ui.item.value;
                  value = getAvailableValue(value);
                  return false;
              }

          }

          );
        });
   
    </script>

 <asp:TextBox runat="server" Width="300px" Css ToolTip="input search key words here" />

 

ashx文件主要代码(友情提示:注意用一个ashx文件就新建一个,我吃过亏)

public class SearchKey : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            if (context.Request.QueryString["q"] != null)
            {
                string key = context.Request.QueryString["q"];
                context.Response.Write(GetCorporationList(key));
            }
        }

        public string GetCorporationList(string key)
        {

  //一般都是取出你的数据库中的数据,比方说要查找类似的数据库工厂表的名称

      sql语句是select FactoryEnName from Factoryinfo where FactoryEnName like @key

     SqlParameter[] pars = new SqlParameter[] {
                new SqlParameter("@key", "%"+key+"%")
            };(很基础)
            DataTable dt = FactoryManager.GetFactoryList(key);
            string result = "";
            if (dt.Rows.Count > 0)
            {

                StringBuilder items = new StringBuilder();

                foreach (DataRow dr in dt.Rows)
                {

                  //取得类似工厂名
                    items.Append(dr["FactoryEnName"].ToString() + "\n");
                }
                result = items.ToString();
            }
            return result;
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

 

希望能帮到你。分享快乐,希望能给国家的IT做点贡献!

a85295853 | 园豆:2 (初学一级) | 2012-04-06 17:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册