使用DBMS的SearchEngine项目 [英] SearchEngine project with DBMS
问题描述
如何使用数据库(其中查询词来自文本框)来实现搜索引擎?
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" />
<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屋!