Foxtable(狐表)用户栏目专家坐堂 → [求助]相似度


  共有1691人关注过本帖树形打印复制链接

主题:[求助]相似度

帅哥哟,离线,有人找我吗?
天一生水
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11230 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]相似度  发帖心情 Post By:2018/7/31 11:15:00 [只看该作者]

甜老师好!

您以前写的相似度代码,我想在第二段代码的加黑地方应用。

原先代码的意思是:[案号][被告]都相同时,就引用数据,否则就添加新行;

实际应用中,[被告]的描述可能有些不同,因为共同的字符不固定,前后的包含关系也不确定。比如,“章丘市人民政府”和“济南市章丘区人民政府”。

因此,我希望,如果[被告]的相似度>70(相同字符与短字符串的占比)就认为找到了,进而引用数据;否则才添加新行。

第二段代码怎样修改呢?自己改不了,请老师指教。

谢谢!

 

1、--------------------------------------

Dim sa As String = "章丘市人民政府"
Dim sb As String = "济南市章丘区人民政府"
Dim count As Integer
'For i As Integer = 0 To sa.Length - 1
For i As Integer = 0 To IIF((sa.Length-sb.Length)< 0, sa, sb).Length - 1   '短字符长度
    'If sb.Contains(sa(i)) Then
    If IIF((sa.Length-sb.Length)> 0, sa, sb).Contains(IIF((sa.Length-sb.Length)< = 0, sa, sb)(i)) Then    '长字符包括短字符
        count += 1
    End If
Next
msgbox(IIF((sa.Length-sb.Length)< =0, sa.Length, sb.Length))    '短字符长度
msgbox(IIF((sa.Length-sb.Length) > 0, sa.Length, sb.Length))    '长字符长度
msgbox(count)                  '共同字符数
msgbox(count/IIF((sa.Length-sb.Length)< = 0, sa.Length, sb.Length)*100%)   '占比-短
msgbox(count/IIF((sa.Length-sb.Length)> 0, sa.Length, sb.Length)*100%)   '占比-长

 

2、---------------------------------------
 If e.DataCol.name = "庭审笔录_被告出庭" Then
        Dim str As String = e.NewValue
        If str > "" Then
            Dim ary() As String = str.Replace("被告", "@").split("@")           
            For i As Integer = 0 To ary.length-1
                str = ary(i).trim()
                If str > "" Then
                    str = "被告" & str
                    Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=被告).*?(?=。)")   '提取被告单位名称
                    Dim s As String = mc(0).value
                    '到机关负责人出庭表去找
                    Dim dr = DataTables("机关负责人出庭").Find("[案号] = '" & e.DataRow("案号") & "' And [被告] = '" & s.split(",")(0) & "'")
                    If dr Is Nothing Then                       
                        dr = DataTables("机关负责人出庭").AddNew
                    End If
                    dr("案号") = e.DataRow("案号")
                    dr("被告") = s.split(",")(0)
                    dr("庭审笔录被告出庭") = str
                    dr("开庭时间") = e.DataRow("开庭排期_开庭时间")                   
                End If
            Next
        End If
    End If

 

 


 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/31 11:55:00 [只看该作者]

如果你需要相似度查询,你就不能用find查找了。

 

你需要循环表格的每一行,取出每一行的值和你要匹配的数据比较,才能得出对比结果的。匹配以后跳出循环,或者是找到最匹配的那个。


 回到顶部