站内搜索的小技巧(多关键词/红色高亮显示关键词)
发布时间:2007-2-9 12:29:57
一般的来说,大部分网站都会有站内搜索,站内搜索会提供来访者较方便快捷查找自己需要的内容,但是大部分网站的站内搜索都是单关键词搜索,而且搜索之后并不高亮显示关键词.下面我们就来一一讲解一下这两个小技巧的原理,并附上主要的源代码进行参考.
多关键词搜索:多关键词搜索一般来说是使用空格作为标识(受百度和google影响吧,呵呵,我们这里也以空格符为例),就是在输入关键词时输入"不想 说 乔丹"这种形式,要求搜索数据库内所有符合"不想"、"说"、"乔丹"或这三个关键词的任意组合的记录来。首先在查询结果页获取关键词,keyword=trim(request("keyword")),然后利用空格作为标识符进行分隔进关键词数组,q_key=split(keyword," "),再对数据库内进行like查询,这里有一点点小技巧,在这里我把SQL查询语句作一个简单的参考(sql语句中的空格要保留):
-----------------------------------------------------------------
<%
'数据表中添加一个自编号的ID字段,该字段>0,这样下面sql语句里id<0就查询不到任何记录,起作用的是or语句后的条件,这里假设数据库表名为table1,要查询的字段名为aa
sql="select * from [table1] where id<0 "
for i=0 to ubound(q_key)
sql=sql&" or [aa] like '%"&q_key(i)&"%' "
next
%>
------------------------------------------------------------------
上面记得查询条件里一定要有一点where id<0,因为where子句后面不能直接跟or语句,所以要添加一个记录为空的查询条件,这里面最重要的一点就是or关键词,or 跟and 是相反的,or只要满足一个条件就行,and则要满足所有条件。
高亮显示搜索结果中的关键词:这里我们使用红色作为高亮色吧,数据库表还是使用上例中的table1表,字段还是aa字段,当查询出结果之后,我们再输出aa字段的值,并把aa字段中包含的搜索关键词用红色高亮显示。下面给出源代码:
-------------------------------------------------------------------
<%
'前面打开数据库连接数据库,在这里我就略去了
response.write"<ul>"
for k=0 to ubound(q_key)
aa=replace(trim(rs("aa")),q_key(k),"<span style='color:red;'>"&q_key(k)&"</span>")
response.write"<li>"&aa&"</li>"
next
response.write"</ul>"
%>
--------------------------------------------------------------------
该段代码中最重要的就是replace函数,该函数的作用就是替换掉rs("aa")里面的关键词为<span style='color:red;'>"&q_key(k)&"</span>,就变成了红色高亮显示关键词了,在这里简单的介绍一下replace函数的作用,replace函数是一个替换函数,可以将指定字符串内的指定字符或字符串,替换成另一个指定的字符或字符串,带有三个参数,replace(待替换的原字符或字符串,要替换的关键字符或字符串,替换成的新的关键字符或字符串)。
好了,上面就把这两种小技巧的最主要代码及功能实现原理或过程进行了简单的分析。