时间:2021-05-18
CLASS功能.替换传入的字符串成为SQL语句Where关键字后面的表达式:
词语搜索[例如:小明]
词组搜索
词组里面每一个词都将被检索
例如:小强1小名1小强强小小强
逻辑搜索
支持And和Or运算符.
例如:小明And小强And小小强
复合条件:
例如:(小小明Or小明)And(小强Or小小强)
例如:(小小明Or小名)And小小强
例如:ROOT1And(广东人Or北京人)
-----------------------------------------------------------
复制代码 代码如下:
ClassCreateQueryString
PublicobjReg
PublicintStart
PublicstrField
PrivateobjNode2
PrivatestrText
PublicPropertyLetQueryString(strValue)
strText=Lcase(strValue)
EndProperty
PrivateSubClass_Initialize()
SetobjReg=newRegExp
strField="(标题+文章)"
EndSub
PrivateSubClass_Terminate()
SetobjReg=Nothing
EndSub
PublicDefaultFunctionGetText()
DimblnRes
DimstrSky
WithobjReg
.IgnoreCase=true
.Global=True
.Pattern="\s"
blnRes=.Test(strText)
EndWith
If(NotblnRes)Then
intStart=2
GetText=strField&"like'%"&strText&"%'"
Else
objReg.Pattern="\sand|\sor"
blnRes=objReg.Test(strText)
IfblnResThen
strSky=check()
IfstrSky=FalseThen
GetText=wahaha()
Else
GetText=strSky
Endif
Else
GetText=wahaha()
Endif
EndIf
EndFunction
PrivateFunctionwahaha()
DimstrTer
DimstrLikes
DimstrOrs
DimstrI
DimobjRe
strTer=""
strLikes="or("&strField&"like'%"
strOrs="%')"
objReg.Pattern="(\S*\S)"
SetobjRe=objReg.Execute(strText)
ForEachstrIInobjRe
strTer=strTer&strLikes&strI&strOrs
Next
wahaha=Mid(strTer,4)
intStart=3
EndFunction
PrivateFunctionCheckYes(strMode,intCount)
DimobjNode1
objReg.Pattern=strMode
SetobjNode1=objReg.Execute(strText)
IfobjNode1.Count<1Then
CheckYes=True
Else
SetobjNode2=objNode1(0)
IfobjNode2.subMatches.Count<intCountThen
CheckYes=True
EndIf
EndIf
EndFunction
PrivateFunctionORAND()
DimstrSSS
DimstrCCC
DimstrAAA
Dima143
Dimi
DimobjN
DimblnTru
DimblnBBB
strSSS="("&strField&"like'%"
strCCC="%')"
strAAA=""
n1=0
blnTru=True
blnBBB=True
objReg.Pattern="(\S*\S)"
SetobjN=objReg.Execute(strText)
a143=objN.Count-1
If(objN.Item(a143)="and")Or(objN.Item(a143)="or")Then
ORAND=False
ExitFunction
Endif
ForEachiInobjN
IfblnTruThen
If(i<>"and")And(i<>"or")Then
blnTru=False
strAAA=strAAA&strSSS&i&strCCC
Else
blnBBB=false
Exitfor
Endif
Else
If(i="and")Or(i="or")Then
blnTru=True
strAAA=strAAA&i
Else
blnBBB=False
ExitFor
Endif
Endif
Next
If(NotblnBBB)Then
ORAND=False
Else
ORAND=strAAA
intStart=4
Endif
EndFunction
PrivateFunctioncheck()
Dimre
Dimre1
Dimre2
Dimre3
Dimstr
Dimstr1
Dima1
Dima2
Dima3
Dima4
str=strField&"like'%"
str1="%'"
WithobjReg
.Pattern="^\(.+\)\s(and|or)\s"
re=.Test(strText)
.Pattern="\s(and|or)\s\(.+\)$"
re3=.Test(strText)
EndWith
IfreAndre3Then
IfCheckYes("^\((\S*\S)(\bor\b|\band\b)(\S*\S)\)(and|or)\((\S*\S)(\bor\b|\band\b)(\S*\S)\)$",6)Then
check=False
Else
WithobjNode2
a1=.submatches(0)
a2=.submatches(2)
a3=.submatches(4)
a4=.submatches(6)
check="("&str&a1&str1&""&.submatches(1)&""&str&a2&str1&")"&_
.submatches(3)&"("&str&a3&str1&""&.submatches(5)&""&str&a4&str1&")"
intStart=5
EndWith
EndIf
ElseIfreThen
IfCheckYes("^\((\S*\S)(\bor\b|\band\b)(\S*\S)\)(and|or)(.+)",4)Then
check=False
Else
WithobjNode2
a1=.submatches(0)
a2=.submatches(2)
a3=.submatches(4)
check="("&str&a1&str1&""&.submatches(1)&""&str&a2&str1&")"&_
.submatches(3)&"("&str&a3&str1&")"
intStart=5
EndWith
EndIf
ElseIfre3Then
IfCheckYes("(.+)(and|or)\((\S*\S)(\bor\b|\band\b)(\S*\S)\)$",4)Then
check=False
Else
WithobjNode2
a1=.submatches(0)
a2=.submatches(2)
a3=.submatches(4)
check="("&str&a1&str1&")"&.submatches(1)&"("&str&a2&str1&""&_
.submatches(3)&""&str&a3&str1&")"
intStart=5
EndWith
EndIf
Else
check=ORAND()
EndIf
EndFunction
EndClass
-------------------------注意-----------------------------
替换好的字符串并不是完整的SQL语句.只是生成SQL语句的WHERE关键字后面的表达式.发送到ASP程序的时候.你可以在前面加上
"selectid,标题,name,TableNamefromSearchAllwhere"
这样类似的SQL语句
-------------------------VBScript例子-----------------------------
DimobjROOT1
SetobjROOT1=newCreateQueryString
objROOT1.QueryString=strText'====传入要替换的字符串
objROOT1.strField="要查询的字段名字"'===如果不设置.默认值是"(标题+文章)"
strText=objROOT1()'=========得到替换好的SQL语句
If(objQueryString.intStart=4)Then
CallMsgbox("启动按逻辑搜索")
EndIf
SetobjROOT1=Nothing
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
搜索关键字管理一、搜索关键字管理功能介绍:搜索关键字管理为对网站前台搜索关键字记录的管理。二、搜索关键字管理:(一)、登录后台,单击“栏目&rdqu
如何查找支持消费者保障服务的宝贝?如您要搜索宝贝,可以先选择淘宝网首页搜索框上方的“宝贝”标签,再输入宝贝关键字进行搜索:点击搜索后,在
网站的核心关键词是指:我们网站产品和服务的目标客户可能搜索最多的关键字,您希望用户搜索单词时,搜索到我们网站的首页的词。那么核心关键词该如何确定呢? 核心关键
长尾关键字的概念:长尾关键字是指网站上既不是目标关键字又能带来搜索流量的关键字。长尾关键词的特点比较长,往往由2-3个词组成,甚至存在于内容页中的短语,除了内容
什么是基于关键字的广告?关键字广告是一种使用关键字研究在搜索引擎上投放广告的方法。通过确定与你的业务产品最相关的关键字搜索,你可以竞标将广告放在相关关键字的搜索