使用DBMS的SearchEngine项目 [英] SearchEngine project with DBMS

查看:75
本文介绍了使用DBMS的SearchEngine项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用数据库(其中查询词来自文本框)来实现搜索引擎?

How to implement a searchengine using database where the query term is taken from a textbox?

Thanks in advance!

推荐答案

我正在编写代码,只需复制并粘贴即可.

首先添加javascript代码如下:

i m writing code just copy and past it .

first add javascript the code is below:

//Called from keyup on the search textbox.//Starts the AJAX request.
function searchSuggest(e)
{

      var key = window.event ? e.keyCode : e.which;
      if (key==40 || key==38)
      {
       scrolldiv(key);
      }
      else
      {
      if (searchReq.readyState == 4 || searchReq.readyState == 0)
        {
        var str = escape(document.getElementById('txtSearch').value);
        strOriginal=str;
        searchReq.open("GET", 'Result.aspx?search=' + str, true);
        searchReq.onreadystatechange = handleSearchSuggest;
        searchReq.send(null);
        }
      }

}
//Called when the AJAX response is returned.
function handleSearchSuggest()
 {
  if (searchReq.readyState == 4)
      {
          var ss = document.getElementById('search_suggest');
          ss.innerHTML = '';
          var str = searchReq.responseText.split("~");
          if(str.length > 1)
          {
            for(i=0; i < str.length - 1; i++)
            {
            //Build our element string.  This is cleaner using the DOM, but
            //IE doesn't support dynamically added attributes.
               maxDivId=i;
               currentDivId=-1;
               var suggest =  '<div ';
                   suggest += 'id=div'+ i;
                   suggest += '  '
                   suggest += 'onmouseover="javascript:suggestOver(this);" ';
                   suggest += 'onmouseout="javascript:suggestOut(this);" ';
                   suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
                   suggest += 'class="suggest_link">' + str[i] + '</div>';
                   ss.innerHTML += suggest;
                   ss.style.visibility='visible';
            }
           }
           else
            {
                ss.style.visibility='hidden';
            }
       }
 }
 //Mouse over function
 function suggestOver(div_value)
 {  div_value.className = 'suggest_link_over';
 }
  function scrollOver(div_value)
 {
   div_value.className = 'suggest_link_over';
   document.getElementById('txtSearch').value=div_value.innerHTML;
 }
 //Mouse out function
 function suggestOut(div_value)
 {
    div_value.className = 'suggest_link';
 }
 //Click function
 function setSearch(value)
 {
    var ss = document.getElementById('search_suggest');
    document.getElementById('txtSearch').value = value;
    ss.innerHTML = '';
    ss.style.visibility='hidden';
 }
 function scrolldiv(key)
 {
   var tempID;

    if(key==40)
    {
         if(currentDivId==-1)
         {
          scrollOver(div0);
          currentDivId=0;
         }
         else
         {
            if(currentDivId==maxDivId)
            {
                 tempID='div'+maxDivId;
                 var a=document.getElementById(tempID);
                 currentDivId=-1;
                 suggestOut(a)
                 document.getElementById('txtSearch').value=strOriginal;
            }
            else
            {
                tempID=currentDivId+1;
                setScroll(currentDivId,tempID)
            }
         }
    }
    else if (key==38)
    {
         if(currentDivId==-1)
         {
         tempID=maxDivId;
         setScroll(maxDivId,maxDivId)
         }
         else
         {
         if (currentDivId==0)
            {
                 tempID='div'+currentDivId;
                 var a=document.getElementById(tempID);
                 currentDivId=-1;
                 suggestOut(a)
                 document.getElementById('txtSearch').value=strOriginal;
            }
          else
         {
            tempID=currentDivId-1;
            setScroll(currentDivId,tempID)
         }
    }

  }
 }
function setScroll(Old,New)
{
       var tempDivId;
       currentDivId=New;
       tempDivId='div'+Old;
       var a=document.getElementById(tempDivId);
       suggestOut(a)
       tempDivId='div'+currentDivId;
       var b=document.getElementById(tempDivId);
       scrollOver(b);
}




现在,将此JavaScript添加到您的页面.
制作一个html输入文本控件框.




Now add this javascript to ur page.
make a html input text control box.

<body>
    <form id="form1" runat="server">
    <table>
    <tr>
    <td style="font: 20px arial" >
    Welcome to Demo of Google like Search Suggest Text Box
    </td>
    </tr>
    </table>
   <input type="text" id="txtSearch" name="txtSearch" alt="Search Criteria"     onkeyup="searchSuggest(event);" autocomplete="off" style="width: 544px" />&nbsp;
    <div id="search_suggest" style="z-index: 2; visibility: hidden;position: absolute;left: 11px; width: 548px; top: 70px"></div>
    <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" />
    </form>
</body>



现在添加另一个页面,根据您的意愿给出名称结果或任何名称,并将代码放在下面给出的窗口后面的代码中:

字符串clientName;
受保护的void Page_Load(对象发送者,EventArgs e)
{
clientName = Request ["search"].ToString();
Getresult();

}

//方法Getresult将返回(Response.Write),其中包含用字符〜"分隔的搜索结果

//例如将在搜索建议框中显示的"Ab〜Abh〜Abhi〜Abhe〜Abhishek"




私有无效Getresult()
{
DataTable dt = new DataTable();

SqlConnection con =新的SqlConnection(数据源=本地;初始目录= Abhi;用户ID = sa1234;密码= sa1234");

SqlCommand cmd =新的SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;



cmd.CommandText ="Search";

//搜索是存储过程名称,该参数将参数接受为@Client_Name并给出搜索结果

SqlParameter parClientName =新的SqlParameter("@ Client_Name",SqlDbType.VarChar);
parClientName.Value = clientName;
cmd.Parameters.Add(parClientName);
SqlDataAdapter da =新的SqlDataAdapter(cmd);
da.Fill(dt);
StringBuilder sb = new StringBuilder();

如果(dt.Rows.Count> 0)
{
for(int i = 0; i< dt.Rows.Count; i ++)
{
sb.Append(dt.Rows [i] .ItemArray [0] .ToString()+〜"); //创建Con
}
}

Response.Write(sb.ToString());

}



now add another page give name result or any name as ur wish and put the code in code behind window given below:

string clientName;
protected void Page_Load(object sender, EventArgs e)
{
clientName = Request["search"].ToString();
Getresult();

}

//The Method Getresult will return (Response.Write) which contains search results seprated by character "~"

// For E.G. "Ab~Abh~Abhi~Abhe~Abhishek" which will going to display in search suggest box




private void Getresult()
{
DataTable dt = new DataTable();

SqlConnection con = new SqlConnection("Data Source=Local;Initial Catalog=Abhi;User ID=sa1234;Password=sa1234");

SqlCommand cmd=new SqlCommand();
cmd.Connection=con;
cmd.CommandType= CommandType.StoredProcedure;



cmd.CommandText="Search";

//Search is Stored Procedure Name which accecpts parameter as @Client_Name and give the search Result

SqlParameter parClientName = new SqlParameter("@Client_Name", SqlDbType.VarChar);
parClientName.Value = clientName;
cmd.Parameters.Add(parClientName);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
StringBuilder sb = new StringBuilder();

if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append(dt.Rows[i].ItemArray[0].ToString() + "~"); //Create Con
}
}

Response.Write(sb.ToString());

}


这篇关于使用DBMS的SearchEngine项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆