zoukankan      html  css  js  c++  java
  • 初探站内搜索(下)

    建立好Index数据库之后,我们就可以开始进行检索了。首先我们在sql2005中建立一个关键字索引表SearchLog表

    字段如下:在SearchDateTime上建立一个索引,因为该字段需要经常查询,这是优化数据库最基本的哦。

    这样我们在VS2008中添加一个强类型DataSet,把表拖到DataSet视图上生成强类型类,接着添加SQLHelper类来访问数据库。
    数据访问层:
    SQLHelper.cs代码如下:这里我们只需要返回个DataTable,如果有需要的话自己可以再天加点方法进去
    1 public class SQLHelper
    2 {
    3 public static string connstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    4
    5 public static DataTable ExecuteDataTable(string sql,params SqlParameter[] parameters)
    6 {
    7
    8 using (SqlConnection conn = new SqlConnection(connstr))
    9 {
    10 conn.Open();
    11 using (SqlCommand cmd = conn.CreateCommand())
    12 {
    13 cmd.CommandText = sql;
    14 cmd.Parameters.AddRange(parameters);
    15 DataSet dataset = new DataSet();
    16 using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
    17 {
    18 adapter.Fill(dataset);
    19 }
    20 return dataset.Tables[0];
    21 }
    22 }
    23 }
    24
    25 }

    最后在SearchSuggestion.ashx一般处理程序中实现对用户在浏览器端输入关键字改变之后的AJAX请求:

    1 public class SearchSuggestion : IHttpHandler
    2 {
    3
    4 public void ProcessRequest(HttpContext context)
    5 {//服务器返回搜索建议词汇的时候将词汇以字符串数组的形式(JSon)返回给浏览器
    6   context.Response.ContentType = "text/plain";
    7 string term=context .Request ["term"];//通过httpwatch看出我们从客户端页面传过来的参数是term
    8 //string[] strs = { "baidu", "google", "sina" };
    9  
    10 DataTable table = SQLHelper.ExecuteDataTable("select distinct KeyWord from SearchLog where KeyWord like @word", new SqlParameter("word", "%" + term + "%"));
    11 List<string> list = new List<string>();
    12 for (int i = 0; i < table.Rows.Count; i++)
    13 {
    14 string word = Convert.ToString(table.Rows[i][0]);
    15 list.Add(word);
    16 }
    17
    18 JavaScriptSerializer jss = new JavaScriptSerializer();
    19 context.Response.Write(jss.Serialize(list));
    20 }
    21
    22 public bool IsReusable
    23 {
    24 get
    25 {
    26 return false;
    27 }
    28 }
    29 }

    这样客户端浏览器的JQueryUI就实现了点击自动补全功能然后查选该热门关键词。有关前台调用JQuery的代码在上一篇日志有。

    最后在web.config中设置我们要从哪个服务器下载的网页 

    <appSettings>
        <add key="SiteURL" value="http://localhost:8081/" />   
      </appSettings>

    OK~至此我的站内搜索学习算告一段落了

    谢谢各位~

     
  • 相关阅读:
    java——testNG——工作复习——xml详解
    转义符,re模块,rangdom随机数模块,
    nyoj 814又见拦截导弹
    Soj题目分类
    Xcode 性能优化
    python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法(pip使用豆瓣源)
    浅谈模拟退火
    43-正则表达式(1)
    命令行上的narrowing(随着输入逐步减少备选项)工具
    有效决策,这么做就对了!
  • 原文地址:https://www.cnblogs.com/lys_013/p/1852188.html
Copyright © 2011-2022 走看看