以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 输出问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=130965) |
-- 作者:utcxray -- 发布时间:2019/2/13 10:39:00 -- 输出问题 Dim s1 As List(of String) Dim s2 As List(of String) S1 = DataTables("专利交易库").GetValues("专利名称") S2= DataTables("专利交易库").GetValues("交易要求") For Each s22 As String In s2 For Each s11 As String In s1 Dim count As Integer = s11.Length For i As Integer = count -2 To 1 Step -1 For j As Integer = count - i To 0 Step -1 Dim s As String = s11.SubString(j,i) If s22.Contains(s) And i >1 Then Dim dr As DataRow = DataTables("专利交易库").Find("交易要求 = \'" & s22 & "\'") Dim ddr As DataRow = DataTables("专利交易库").Find("专利名称 = \'" & s11 & "\'") If dr IsNot Nothing And ddr IsNot Nothing Then output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & " " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & " 匹配有" & i & "个" & " " & " 匹配的字符是:" & s & " " & "相似度:" & Format(i/s11.Length,"#0.00%") ) output.show("") output.show("") End If End If Next Next Next Next 这段代码目的是在专利交易库中查询和交易要求能匹配的专利名称,现在遇见输出问题,计划将输出结果能达到两个目的1、直接输出为一个Excel文件,此文件的按输出要求"可能与买方QQ:" & dr("qq") & "要求:" & s22 & " " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & " 匹配有" & i & "个" & " " & " 匹配的字符是:" & s & " " & "相似度:" & Format(i/s11.Length,"#0.00%") )格式。2、或者能直接输出项目项目中直接输出为哪怕是一个临时表,相应字段也按"可能与买方QQ:" & dr("qq") & "要求:" & s22 & " " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & " 匹配有" & i & "个" & " " & " 匹配的字符是:" & s & " " & "相似度:" & Format(i/s11.Length,"#0.00%") )这样 ![]() ![]() [此贴子已经被作者于2019/2/13 10:47:44编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/2/13 10:42:00 -- 1、输出为txt,如
http://www.foxtable.com/webhelp/scr/0435.htm
2、操作excel,参考
http://www.foxtable.com/webhelp/scr/1144.htm
3、生成临时表,参考
http://www.foxtable.com/webhelp/scr/0679.htm
|
-- 作者:utcxray -- 发布时间:2019/2/13 10:54:00 -- 谢谢!还有另外加了个问题 |
-- 作者:有点甜 -- 发布时间:2019/2/13 10:58:00 -- 比如
Dim s1 As List(of String)
Dim s2 As List(of String)
S1 = DataTables("专利交易库").GetValues("专利名称")
S2= DataTables("专利交易库").GetValues("交易要求")
For Each s22 As String In s2
For Each s11 As String In s1
Dim count As Integer = s11.Length
For i As Integer = count -2 To 1 Step -1
For j As Integer = count - i To 0 Step -1
Dim s As String = s11.SubString(j,i)
If s22.Contains(s) And i >1 Then
Dim dr As DataRow = DataTables("专利交易库").Find("交易要求 = \'" & s22 & "\'")
Dim ddr As DataRow = DataTables("专利交易库").Find("专利名称 = \'" & s11 & "\'")
If dr IsNot Nothing And ddr IsNot Nothing Then
output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & " " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & " 匹配有" & i & "个" & " " & " 匹配的字符是:" & s & " " & "相似度:" & Format(i/s11.Length,"#0.00%") )
output.show("")
output.show("")
exit for
End If
End If
Next
Next
Next
Next
|
-- 作者:utcxray -- 发布时间:2019/2/13 11:09:00 -- 还是有重复 ![]() ![]() 另外再请教下,contain like find 在字符比较方面的具体差别。能详细说说嘛?哪怕是用一两段语言文字来举例。 实在是工作急需 给您个能直接复制黏贴的文字 能与买方QQ:302910554要求:1、LED光源 相关授权未下证发明专利! 匹配的QQ:3003088541专利是:一种基于LED探照功能的河道堤坝垃圾拾取装置 匹配有3个 匹配的字符是:LED 相似度:13.64% 可能与买方QQ:302910554要求:1、LED光源 相关授权未下证发明专利! 匹配的QQ:2881996703专利是:一种利于热量传导的LED车灯 匹配有3个 匹配的字符是:LED 相似度:21.43% 可能与买方QQ:3337549656要求:1、可降解高分子材料、一次性餐具相关高分子材料、 匹配的QQ:1019283804专利是:一种高分子转光材料的搅拌混合装置 匹配有3个 匹配的字符是:高分子 相似度:18.75% 可能与买方QQ:771982542要求:1、社区门禁,人脸识别门禁,门禁一体机等,未交费发明 匹配的QQ:2851715030专利是:一种具有人脸识别功能的智能型防盗门 匹配有4个 匹配的字符是:人脸识别 相似度:23.53% 可能与买方QQ:771982542要求:1、社区门禁,人脸识别门禁,门禁一体机等,未交费发明 匹配的QQ:2851715030专利是:一种具有人脸识别功能的智能型防盗门 匹配有3个 匹配的字符是:脸识别 相似度:17.65% 可能与买方QQ:1151496018要求:1. 单冻机,冷冻辣椒 加工工艺 、单冻机 关键字:冻机、单冻机~ 匹配的QQ:3431099355专利是:一种机械工厂用的小型机械加工工具清洗设备 匹配有3个 匹配的字符是:加工工 相似度:15.00% 可能与买方QQ:2832093389要求:1.导电橡胶及橡胶混炼,硫化方面实用新型多件,状态不限 匹配的QQ:1019283804专利是:一种电动车用新型集成芯片设备 匹配有3个 匹配的字符是:用新型 相似度:21.43% 可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减 匹配的QQ:3003088541专利是:一种便于拆分的新能源汽车电池夹紧装置 匹配有3个 匹配的字符是:新能源 相似度:16.67% 可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减 匹配的QQ:2851715030专利是:一种基于物联网的方便休息的新能源汽车 匹配有3个 匹配的字符是:新能源 相似度:16.67% 可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减 匹配的QQ:2851715030专利是:一种具有雨水收集和绿化带浇水功能的新能源洒水车 匹配有3个 匹配的字符是:新能源 相似度:13.04% 可能与买方QQ:1416460516要求:1.批量求购工业、机械、新能源、通信领域,申请日在15年以后的下证发明,价格在4500左右,有证书原件,年费正常,来得及费减 匹配的QQ:3003088541专利是:一种生活用太阳能新能源供电装置 匹配有3个 匹配的字符是:新能源 相似度:20.00% [此贴子已经被作者于2019/2/13 11:13:13编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/2/13 11:16:00 -- Dim s1 As List(of String) Dim s2 As List(of String) S1 = DataTables("专利交易库").GetValues("专利名称") S2= DataTables("专利交易库").GetValues("交易要求") For Each s22 As String In s2 For Each s11 As String In s1 Dim count As Integer = s11.Length Dim flag As Boolean = False For i As Integer = count -2 To 1 Step -1 For j As Integer = count - i To 0 Step -1 Dim s As String = s11.SubString(j,i) If s22.Contains(s) And i >1 Then Dim dr As DataRow = DataTables("专利交易库").Find("交易要求 = \'" & s22 & "\'") Dim ddr As DataRow = DataTables("专利交易库").Find("专利名称 = \'" & s11 & "\'") If dr IsNot Nothing And ddr IsNot Nothing Then output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & " " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & " 匹配有" & i & "个" & " " & " 匹配的字符是:" & s & " " & "相似度:" & Format(i/s11.Length,"#0.00%") ) output.show("") output.show("") flag = True Exit For End If End If Next If flag = True Then Exit For Next Next Next |
-- 作者:utcxray -- 发布时间:2019/2/13 13:02:00 -- Dim s1 As List(of String) Dim dt As Date = Date.Now Dim s2 As List(of String) Dim m As Integer =0 S1 = DataTables("专利交易库").GetValues("专利名称") S2= DataTables("专利交易库").GetValues("交易要求") For Each s22 As String In s2 For Each s11 As String In s1 Dim count As Integer = s11.Length Dim flag As Boolean = False For i As Integer = count -2 To 1 Step -1 For j As Integer = count - i To 0 Step -1 Dim s As String = s11.SubString(j,i) If s22.Contains(s) And i >1 And S Like "?[!生产装置设备一种产品实用新型方法用于的]" Then Dim dr As DataRow = DataTables("专利交易库").Find("交易要求 = \'" & s22 & "\'") Dim ddr As DataRow = DataTables("专利交易库").Find("专利名称 = \'" & s11 & "\'") If dr IsNot Nothing And ddr IsNot Nothing Then m=m+1 output.show("可能与买方QQ:" & dr("qq") & "要求:" & s22 & " " & "匹配的QQ:" & ddr("QQ") & "专利是:" & s11 & " 匹配有" & i & "个" & " " & " 匹配的字符是:" & s & " " & "相似度:" & Format(i/s11.Length,"#0.00%") ) output.show("") output.show("") flag = True Exit For End If End If If flag = True Then Exit For Next Next Next Next output.show("") output.show("") output.show("共比较 " & m & " 条数据") Output.Show("共耗时 " & (Date.now - dt).TotalSeconds & " 秒") 共比较 1973 条数据 共耗时 120.339883 秒 这个运算速度慢呐,怎么优化
[此贴子已经被作者于2019/2/13 13:14:00编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/2/13 14:39:00 -- 1、循环2000行,再循环2000行,就是 400000 次,然后还循环每一个字符,假如每次10个字符,那就是 40万*10*10=4千万 次比较,肯定比较慢。
2、你试试把find去掉测试
Dim s1 As List(of String)
|
-- 作者:utcxray -- 发布时间:2019/2/13 14:59:00 -- 共比较 1710 条数据 共耗时 117.7257335 秒
|
-- 作者:utcxray -- 发布时间:2019/2/13 15:00:00 -- 共比较 1710 条数据 共耗时 117.7257335 秒 另外S Like "?[!生产装置设备一种产品实用新型方法用于的]" 这句话意思是 S如果是“生产装置设备一种产品实用新型方法用于的“”]中的任何一个或多个字符均退出比较循环,对吗 [此贴子已经被作者于2019/2/13 15:06:23编辑过]
|