濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 實(shí)現(xiàn)支持邏輯搜索/單詞搜索/詞組搜索+支持OR/AND關(guān)鍵字的VBS CLASS!

實(shí)現(xiàn)支持邏輯搜索/單詞搜索/詞組搜索+支持OR/AND關(guān)鍵字的VBS CLASS!

熱門標(biāo)簽:萊西電子地圖標(biāo)注 修改地圖標(biāo)注 武夷山旅游地圖標(biāo)注 縣域地圖標(biāo)注打印店 怎么在地圖標(biāo)注自己 外呼系統(tǒng)API接口 鳳臺(tái)百度地圖標(biāo)注店 金昌電話機(jī)器人價(jià)格 個(gè)人可以辦理400電話么
CLASS功能.替換傳入的字符串成為SQL語句Where關(guān)鍵字后面的表達(dá)式:

詞語搜索 [例如: 小明] 

詞組搜索 
詞組里面每一個(gè)詞都將被檢索 
例如: 小強(qiáng)1 小名1 小強(qiáng)強(qiáng) 小小強(qiáng) 

邏輯搜索 
支持 And 和 Or 運(yùn)算符. 
例如: 小明 And 小強(qiáng) And 小小強(qiáng)

復(fù)合條件:
例如:(小小明 Or 小明) And (小強(qiáng) Or 小小強(qiáng)) 
例如:(小小明 Or 小名) And 小小強(qiáng)
例如: ROOT1 And (廣東人 Or 北京人) 
-----------------------------------------------------------
復(fù)制代碼 代碼如下:

Class CreateQueryString

    Public objReg
    Public intStart
    Public strField
    Private objNode2
    Private strText

    Public Property Let QueryString( strValue )
        strText = Lcase( strValue )
    End Property

    Private Sub Class_Initialize()
        Set objReg = new RegExp
        strField = "(標(biāo)題+文章)"
    End Sub

    Private Sub Class_Terminate()
        Set objReg = Nothing
    End Sub

    Public Default Function GetText()
        Dim blnRes
        Dim strSky
        With objReg
            .IgnoreCase = true
            .Global     = True
            .Pattern    = "\s"
            blnRes = .Test( strText )
        End With
        If (Not blnRes) Then
            intStart = 2
            GetText  = strField  " like '%"  strText  "%'"
        Else
            objReg.Pattern = "\sand|\sor"
            blnRes = objReg.Test( strText )
            If blnRes Then
                strSky = check()
                If strSky = False Then
                    GetText = wahaha()
                Else
                    GetText = strSky
                End if
            Else
                GetText = wahaha()
            End if
        End If
    End Function

    Private Function wahaha()
        Dim strTer
        Dim strLikes
        Dim strOrs
        Dim strI
        Dim objRe
        strTer   = ""
        strLikes = " or ("  strField  " like '%"
        strOrs   = "%')"
        objReg.Pattern = "(\S*\S)"
        Set objRe = objReg.Execute(strText)
        For Each strI In objRe 
            strTer  = strTer  strLikes  strI  strOrs
        Next
        wahaha = Mid( strTer , 4 )
        intStart = 3
    End Function

    Private Function CheckYes( strMode , intCount)
        Dim objNode1
        objReg.Pattern = strMode
        Set objNode1 = objReg.Execute( strText )
        If objNode1.Count  1 Then
            CheckYes = True
        Else
            Set objNode2 = objNode1( 0 )
            If objNode2.subMatches.Count  intCount Then
                CheckYes = True
            End If
        End If
    End Function

    Private Function ORAND()
        Dim strSSS
        Dim strCCC
        Dim strAAA
        Dim a143
        Dim i
        Dim objN
        Dim blnTru
        Dim blnBBB
        strSSS = "("  strField  " like '%"
        strCCC = "%')"
        strAAA = ""
        n1     = 0
        blnTru = True
        blnBBB = True

        objReg.Pattern = "(\S*\S)"
        Set objN = objReg.Execute( strText )
        a143 = objN.Count - 1
        If (objN.Item( a143 ) = "and") Or (objN.Item( a143 ) = "or") Then 
            ORAND = False
            Exit Function
        End if
        For Each i In objN
            If blnTru Then 
                If (i > "and") And (i > "or") Then
                    blnTru    = False
                    strAAA = strAAA  strSSS  i  strCCC
                Else
                    blnBBB = false
                    Exit for
                End if
            Else
                If (i = "and") Or (i = "or") Then
                    blnTru    = True
                    strAAA = strAAA  i
                Else
                    blnBBB = False
                    Exit For
                End if
            End if
        Next
        If (Not blnBBB) Then
            ORAND = False
        Else
            ORAND = strAAA
            intStart = 4
        End if
    End Function

    

    Private Function check()
        Dim re
        Dim re1
        Dim re2
        Dim re3
        Dim str
        Dim str1
        Dim a1
        Dim a2
        Dim a3
        Dim a4
        str  = strField  " like '%"
        str1 = "%'"
        With objReg
            .Pattern = "^\(.+\)\s(and|or)\s"
            re       = .Test( strText )
            .Pattern = "\s(and|or)\s\(.+\)$"
            re3      = .Test( strText )
        End With
        If re And re3 Then
            If CheckYes( "^\((\S*\S) (\bor\b|\band\b) (\S*\S)\) (and|or) \((\S*\S) (\bor\b|\band\b) (\S*\S)\)$" , 6 ) Then
                check = False
            Else
                With objNode2
                    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
                End With
            End If
        ElseIf re Then
            If CheckYes( "^\((\S*\S) (\bor\b|\band\b) (\S*\S)\) (and|or) (.+)" , 4 ) Then
                check = False
            Else
                With objNode2
                    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
                End With
            End If
        ElseIf re3 Then
            If CheckYes( "(.+) (and|or) \((\S*\S) (\bor\b|\band\b) (\S*\S)\)$" , 4 ) Then
                check = False
            Else
                With objNode2
                    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
                End With
            End If
        Else
            check = ORAND()
        End If
    End Function

End Class

-------------------------注意-----------------------------
替換好的字符串并不是完整的SQL語句.只是生成SQL語句的WHERE關(guān)鍵字后面的表達(dá)式.發(fā)送到ASP程序的時(shí)候.你可以在前面加上
"select id,標(biāo)題,name,TableName from SearchAll where "
這樣類似的SQL語句
-------------------------VBScript例子-----------------------------
    Dim objROOT1
    Set objROOT1 = new CreateQueryString
    objROOT1.QueryString = strText '====傳入要替換的字符串
    objROOT1.strField = "要查詢的字段名字" '===如果不設(shè)置.默認(rèn)值是"(標(biāo)題+文章)"
    strText = objROOT1()  '=========得到替換好的SQL語句
    If (objQueryString.intStart = 4) Then
        Call Msgbox("啟動(dòng)按邏輯搜索")
    End If
    Set objROOT1 = Nothing

標(biāo)簽:赤峰 通遼 南京 上海 清遠(yuǎn) 涼山 楚雄 邢臺(tái)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《實(shí)現(xiàn)支持邏輯搜索/單詞搜索/詞組搜索+支持OR/AND關(guān)鍵字的VBS CLASS!》,本文關(guān)鍵詞  實(shí)現(xiàn),支持,邏輯,搜索,單詞,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《實(shí)現(xiàn)支持邏輯搜索/單詞搜索/詞組搜索+支持OR/AND關(guān)鍵字的VBS CLASS!》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于實(shí)現(xiàn)支持邏輯搜索/單詞搜索/詞組搜索+支持OR/AND關(guān)鍵字的VBS CLASS!的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    融水| 兴城市| 罗城| 万全县| 涟水县| 新津县| 呼玛县| 郧西县| 唐海县| 浪卡子县| 鱼台县| 江油市| 察雅县| 图木舒克市| 蒲城县| 元谋县| 北票市| 永兴县| 江达县| 梅州市| 巨鹿县| 墨玉县| 宁德市| 花垣县| 宝坻区| 措美县| 克东县| 天峻县| 浦北县| 涞源县| 临泽县| 长治县| 安义县| 富阳市| 普陀区| 南汇区| 南平市| 沂水县| 宁夏| 通州市| 新密市|