Office中国论坛/Access中国论坛

标题: 【Access小品】对dbaseIIIer同志的批判---模仿百度查询示例 [打印本页]

作者: todaynew    时间: 2011-10-9 19:49
标题: 【Access小品】对dbaseIIIer同志的批判---模仿百度查询示例
本帖最后由 todaynew 于 2011-10-12 16:02 编辑

  麦田同志总说我是标题党,我倒是觉得标题能首先把人招进帖子中来不是坏事,只要进来了内容一定不忽悠人便可以了。标题有些吓唬人,其实没有恶意,道理说明确了便知道这个批判还是有价值的,相信dbaseIIIer同志(又名IT新世界)是可以接受的。


  这两日版友hope678同志(又名明月夜)连续发贴问能否像百度那样连续输入字符后,查询出需要的记录来。这个问题的怪异之处在于,hope678同志不希望有任何分隔符来划分词组。看过她的两个帖子,也在QQ中聊了几句,觉得这个问题实在有些无聊,便没怎么往心里去,敷衍几句便罢了。


  今日里看见dbaseIIIer同志贴出的与hope678同志一段聊天记录《想知道怎模仿百度搜寻数据表吗? 》,便又仔细琢磨了一下,觉得这个问题应该有解。于是分析了字符串的解构过程,发现有规律可循,便着手编写了此例。写罢代码,又想到这个问题的思索过程有典型的意义,便怒从心底起,恶向胆边生,觉得有必要批判批判dbaseIIIer同志了。


  从什么角度批评dbaseIIIer同志呢?从技术角度显然不行。因为本例的技术含量并不高,加之dbaseIIIer同志的技术水平远高于我。那么就从一个新的角度展开对dbaseIIIer同志的批评,这个角度叫做创造新思维。墨守成规是创造性思维的大敌,人们往往会习惯从现成的经验出发来看待和思考问题。就本例来说,很少有人会考虑hope678同志的搜索方案,因为在两个词之间加一个分隔符是太简单容易的事情了。以dbaseIIIer同志的来看,不加分隔符,那就一定需要像百度那样搞一个庞大的词库来解决问题,不大可能有比百度的设计群体更高明的想法出现。


  其实dbaseIIIer同志在枚举一串字符组合的可能性时,已经触到了解决问题的边缘,可惜的是dbaseIIIer同志以此作出了相反的结论。造成这一情况的原因,是dbaseIIIer同志过于相信了自己的判断,因而丧失了继续思考下去的机会。dbaseIIIer同志的错误告诉我们,凡事皆有可能。任何怪异的想法,都可能隐藏着孕育着新的发现。只要我们的视野不被经验所蒙蔽,就一定可以看到许多的可能。


[attach]46942[/attach]   2011年10月12日重要更新(增加与或非选项,增加常用词比对)

[attach]46943[/attach]
作者: t小宝    时间: 2011-10-9 20:25
学习学习!
作者: 轻风    时间: 2011-10-9 20:34
留个记号,明天学习。
作者: 咱家是猫    时间: 2011-10-9 21:00
我也做过一个类似功能的例子.一并上传
[attach]46890[/attach]
作者: cjnt007    时间: 2011-10-9 21:05
学习了,分析了代码,实现算法很精辟!{:soso_e179:}
作者: tmtony    时间: 2011-10-9 22:25
谢谢分享!
作者: wyh99999    时间: 2011-10-9 22:28
请教:如何处理词组之间的关系?
作者: todaynew    时间: 2011-10-10 07:05
wyh99999 发表于 2011-10-9 22:28
请教:如何处理词组之间的关系?

请参见《一塌糊涂》一文。


作者: xuwenning    时间: 2011-10-10 08:10
收下
谢谢分享
作者: 轻风    时间: 2011-10-10 09:23
本帖最后由 轻风 于 2011-10-10 09:24 编辑

还是有点漏洞,假如把记录中最后一条内容改为“我是以世界事物分析员! 呵呵!以下我不只能做软件的!载体”(这只是为了测试随便改的),我要查询“可以下载体”,通过拆分变为“可以”、“下载”、“体”而搜不到,而我是想找“可”、“以下”、“载体”。
当然,我这是吹毛求疵了。{:soso_e144:}
作者: tzh16000    时间: 2011-10-10 09:37
轻风 发表于 2011-10-10 09:23
还是有点漏洞,假如把记录中最后一条内容改为“我是可以世界事物分析员! 呵呵!以下我不只能做软件的!载体” ...

百度也会提醒我们使用适当的关键词的
有可能有歧义的时候,加个空格不就好了么?
作者: todaynew    时间: 2011-10-10 10:10
轻风 发表于 2011-10-10 09:23
还是有点漏洞,假如把记录中最后一条内容改为“我是可以世界事物分析员! 呵呵!以下我不只能做软件的!载体” ...

确如此,算法上应需再完善。
作者: wyh99999    时间: 2011-10-10 20:08
todaynew 发表于 2011-10-10 07:05
请参见《一塌糊涂》一文。

谢谢版主!
作者: wyh99999    时间: 2011-10-10 20:08
谢谢版主!
作者: tanhong    时间: 2011-10-10 20:54
老汉的宝贝东西还真是不少,收了!
作者: wyh99999    时间: 2011-10-10 21:15
todaynew 发表于 2011-10-10 07:05
请参见《一塌糊涂》一文。

您的查询所实现的功能非常好,我自己不能在我的查询中实现不了"非"的查询功能。请版主就我的查询进行修改。谢谢!
作者: todaynew    时间: 2011-10-11 11:49
wyh99999 发表于 2011-10-9 22:28
请教:如何处理词组之间的关系?

呵呵,这要看你是打算用与非,还是或非,还是与或非了。
作者: todaynew    时间: 2011-10-11 12:41
wyh99999 发表于 2011-10-9 22:28
请教:如何处理词组之间的关系?

[attach]46919[/attach]


[attach]46918[/attach]

Function cx(str As String)
Dim strWhere As String  '定义条件字符串
Dim A
Dim i As Long
Dim B As Boolean
B = IsNull(Me.tm.Value) = False
B = B And IsNull(Me.AOA.Value) = False
If B = True Then
    If InStr(Me.AOA.Value, "与") > 0 Then
        strWhere = "True"
    Else
        strWhere = "False"
    End If
    A = Split(Me.tm.Value, str)
    For i = 0 To UBound(A, 1)
        If A(i) <> "" Then
            If InStr(Me.AOA.Value, "与") > 0 Then
                strWhere = strWhere & " and ([题名]&[责任者]&[档号] Like '*" & A(i) & "*')"
            Else
                strWhere = strWhere & " or ([题名]&[责任者]&[档号] Like '*" & A(i) & "*')"
            End If
        End If
    Next
    If InStr(Me.AOA.Value, "非") > 0 Then
        strWhere = "not (" & strWhere & ")"
    End If
Else
    strWhere = "True"
End If

Me.查询__综合_子窗体.Form.Filter = strWhere
Me.查询__综合_子窗体.Form.FilterOn = True
End Function
作者: yanwei82123300    时间: 2011-10-11 12:51
学习了,分析了代码,实现算法很精辟
作者: wyh99999    时间: 2011-10-11 13:28
哦,谢谢老汉!
作者: todaynew    时间: 2011-10-12 16:34
轻风 发表于 2011-10-10 09:23
还是有点漏洞,假如把记录中最后一条内容改为“我是可以世界事物分析员! 呵呵!以下我不只能做软件的!载体” ...

所提问题,已经做了修正,呵呵。
作者: ycxchen    时间: 2011-10-15 11:22
下载学习!
作者: 5574916    时间: 2013-5-9 10:41
好作品,学习下!谢谢todaynew的分享!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3