经典论坛's Archiver

zy8870194 发表于 2008-7-2 10:54

多关键字搜索问题

怎么实现图中的搜索啊

kming 发表于 2008-7-2 11:28

我就说个关键字哦,,多个关键字,你可以用数组取得关键字的值,然后取搜索范围去对应匹配,多写几个and啦,把数组里的关键字写完,(还有就是过滤下啦,啦,数组中的关键字为空或有非法字符的不能用啦)

其他想必楼主应该可以搞的啦

carmen1003 发表于 2008-7-2 15:59

范围 and (关键字1 or 关键字2....) and 栏目 and ...

就是这样,很简单的。

carmen1003 发表于 2008-7-2 16:00

至于空格的话可以用split分隔开就行了。

zy8870194 发表于 2008-7-2 16:01

sql="SELECT daima,s3,bianhao,year1,name,zhuti,xianzhuang,gaishan,yujixiaoyi,xiaoyi,year2,luru,year3 FROM ad WHERE"
If zhuti<>"" Then sql=sql&" zhuti="&zhuti&" AND"
If name<>"" Then sql=sql&" name='"&name&"' AND"
If s3<>"" Then sql=sql&" s3 like '%"&s3&"%' AND"
If daima<>"" Then sql=sql&" daima like '%"&daima&"%' AND"
If bianhao1<>"" Then sql=sql&" bianhao1 like '%"&bianhao1&"%' AND"
If lei<>"" Then sql=sql&" lei like '%"&lei&"%' AND"
if right(sql,5)="WHERE" then sql=left(sql,clng(len(sql))-5)  if right(sql,3)="AND" then sql=left(sql,clng(len(sql))-3)
sql=sql&" ORDER BY year1 DESC"
用了这个解决了

carmen1003 发表于 2008-7-2 16:06

汗,asp的代码看的就是头晕。

liaokui361 发表于 2008-7-4 17:01

如果有自己的服务器,就去 装个 分词组件吧,或者就是 构造 like 段 的SQL,多关键词用 空格 隔开,然后 用split()分开,用for 构造 sql 语句,但是注意的地方是 ,对提交的关键词 过滤掉一些非法字符。多个连续 空格 替换为一个,如下:

'函数delspace,替换多个空格为一个
Function delspace(Str)
dim re
    Set re = New RegExp
    re.IgnoreCase = True
    re.Global = True
    re.Pattern = " +"
    delspace = re.Replace(Str, " ")
End Function

多测试下就发现 ,其实还是有很多问题。 结果也不是特别满意。如果要求不是很高,还过得去,效率也是个问题。

页: [1]



Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.