显示多个关键字必须要用空格,能不能不用空格一样能显示多个关键字,应该怎么修改高手指点谢谢

<% dim keyword,keywordlist,path,sql '定义变量
sql=""
keyword=Request.QueryString("keyword") '使用Request 对象的QueryString方法读取表单文本域中用户输入的关键词
if keyword="" then '关键词为空
'给出提示,返回前一页。history.back() 函数的作用是返回前一页
response.write "<Script>window.alert('请输入关键词!');history.back();</Script>"
else
keyword = replace(keyword,"'","") '用空格替换关键词中的字符"'"
keyword = replace(keyword,"[","") '用空格替换关键词中的字符"["
keyword = replace(keyword,"]","") '用空格替换关键词中的字符"]"
keyword = replace(keyword,",","") '用空格替换关键词中的中文字符","
keyword = replace(keyword,",","") '用空格替换关键词中的英文字符","
keyword=ltrim(rtrim(keyword)) '去掉关键词左边和右边的空格。函数LTrim去掉字符串左边空格,函数RTrim去掉字符串右边空格
keywordlist=split(keyword) '将用户输入的关键词用空格分成多个关键词并保存在一维数组keywordlist中
path=Request.QueryString("path") '使用Request对象的QueryString方法读取path值
company="/"&Request.QueryString("path")&"/"
set rs=server.createobject("adodb.recordset") '建立RecordSet对象
for i=0 to ubound(keywordlist) 'ubound 函数获得数组最大下标值
keywordlist(i) = Trim(keywordlist(i)) 'Trim 函数去掉字符串左边和右边函数
sql=sql &" FOX_xinxi.company like '%" & keywordlist(i) & "%' or " 'sql 语句,web.title 指的是数据表web中title列的值,web.title 中包含关键词keywordlist(i)
sql=sql &" FOX_xinxi.dizhi like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.lxrname like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.usertel like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.phone like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.fbsj like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.gjz like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.sheng like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.shi like '%" & keywordlist(i) & "%' or "
sql=sql &" FOX_xinxi.xiang like '%" & keywordlist(i) & "%' or "

next
sql=Left(sql,(LEN(sql)-3))
'LEN 函数获得字符串的长度,left 函数获得字符串从左边数指定数目的字符,在此是去掉字符串中最后几位的"or "
if path="" or company="" then
search_sql=" ts=0 and yz=1 and ("&sql&") order by Rnd(ID-timer())" 'sql 语句
else
'sql 语句
search_sql="company like '%" & company & "%' ts=0 and yz=1 and ("&sql&") order by Rnd(ID-timer())"
end if
'从数据库中查询满足条件的记录,并保存在rs 中
rs.open "select id,company,dizhi,lxrname,usertel,phone,gjz,memo,fbsj,xinxipic,b,ts,sheng,shi, username from FOX_xinxi where "&search_sql,conn,1,1
%>

第1个回答  2012-01-11
同上,不用空格就必须得用其它分隔,或者你可以逐字分隔。
写程序的目的是让用户有更好的使用体验,使用空格来分隔关键是几乎所有人的做法,人们搜索时一般都认为用空格来分隔关键,如果你与别人不同,会让用户用起来很别扭。
不过你上面的分隔方法有点问题。
keywordlist=split(keyword)
这样分隔的话是见一个空格就分隔一次,那如果有人输入 “百度 知道”呢?里面有很多个空空,那么将会分隔成N多的空白关键字,那么服务器是很累的,并且影响搜索结果。
你可以在该句之前加上一句:
keyword = replace(keyword," "," ") ‘将两个或多个空格替换成一个空格。

如果你一定要用其它分隔可以这样:
关建字输入成这样:“百度|知道|我们”用|来分隔
然后下面
keywordlist=split(keyword)
换成
keywordlist=split(keyword,"|")
即可。追问

能不能自动分割呢 也不需要用空格,也不需要用其他的符号来代替!显示相近的关键字!高手指点谢谢

追答

你是说想像百度那样,搜索“知倒”,结果会出现“知倒”,“知道”吗?
那我告诉你别想了,一般企业和个人做一般的网站要达到你说的搜索效果代价是巨大的,你要知道百度要达到你说的效果是获专利技术的,是花费巨资及强大软硬件技术支持来实现的,谷歌的技术对中文近似模糊搜索都没百度技术好,更合况是你个人了。
不过如果你想达到搜索“百度”,结果出现包含“百度”,“百”,“度”还是可以实现的,就是上面我说的逐字分隔。

追问

意思就是说在本站内,如果有一条信息是“我是一条龙”那么搜索“我不是一条龙”那么搜索结“我是一条龙”也能出现!

追答

上面不是说了吗?逐字分隔搜索!!
我不是一条龙,里面是包含 我是一条龙 的,所以这条关键里的有五个字跟内容匹配,所以是可以搜到我是一条龙的。匹配字数越多的越往前排就行了。

第2个回答  2012-01-11
不使用空格就必须要使用其它字符作为分隔符,这是最简便的方法。本回答被网友采纳
第3个回答  2012-01-14
应该不可以吧
相似回答