求一个快速表格模糊搜索算法

atila1978 2005-09-09 08:19:59
一 应用情况:
一个MsflexGrid,其表格结构大体如下:
|--------------------------------|
| 行号 | 列一 | 列二 | 列三 |
|------|--------|-------|--------|
| 1 | 树林木 | 列二 | 列三 |
|------|--------|-------|--------|
| 2 | 树森木 | 列二 | 列三 |
|------|--------|-------|--------|
| 3 | 森树木 | 列二 | 列三 |
|------|--------|-------|--------|
| 4 | 林木 | 列二 | 列三 |
|------|--------|-------|--------|
| 5 | 树林森 | 列二 | 列三 |
|------|--------|-------|--------|
| 6 | 木林 | 列二 | 列三 |
|______|________|_______|________|
二 要实现的效果
对某一列或几列进行模糊搜索,搜索可以使用通配符.比如定义*表示0或多个字符,%表示一个字符(类
似SQL中的Like操作符,呵).
对上表,如果搜索条件为"列一 Like '*林木'",则我们可以搜出下表记录:
|--------------------------------|
| 行号 | 列一 | 列二 | 列三 |
|------|--------|-------|--------|
| 1 | 树林木 | 列二 | 列三 |
|------|--------|-------|--------|
| 4 | 林木 | 列二 | 列三 |
|------|--------|-------|--------|
| 6 | 木林 | 列二 | 列三 |
|_____|________|_______|_________|
再比如搜索条件为 "列一 Like '*木'",可以搜出以下记录
|--------------------------------|
| 行号 | 列一 | 列二 | 列三 |
|------|--------|-------|--------|
| 1 | 树林木 | 列二 | 列三 |
|------|--------|-------|--------|
| 2 | 树森木 | 列二 | 列三 |
|------|--------|-------|--------|
| 3 | 森树木 | 列二 | 列三 |
|------|--------|-------|--------|
| 4 | 林木 | 列二 | 列三 |
|______|________|_______|________|
在条件的设置方面,可以是一个条件,也可以是多个条件,条件间可以是 AND 的关系,也可以是 OR 的
关系.这样的算法如何实现?有谁有现成的算法么??
谢谢了。呵
...全文
277 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
atila1978 2005-09-11
  • 打赏
  • 举报
回复
谢谢乐天.
这两天我登不上CSDN,今天一看,你回复这么多.
真是感谢。呵
Find 方法我用过,呵,一是不能实现模糊搜索,二是只能实现记录定位的功能。呵
当然了,非常感谢你.你的最后一个贴,让我受益匪钱.呵再次感谢。
zlt982001 2005-09-11
  • 打赏
  • 举报
回复
而且可以建立索引查找
具体请看这
http://blog.csdn.net/zlt982001/archive/2005/07/04/413534.aspx
zlt982001 2005-09-11
  • 打赏
  • 举报
回复
老大,我也想,但是应用情况不是这样的。
这些数据不是存在数据库中的,而是用户实际编辑的数据.
语法分析倒不需要,只是能实现以上效果就可以了。举例用的是一个语句,只是为了举例方便.呵
=========================================

当然可使用记录集
因为记录集可以直接创建在内存中
Dim Rs As New ADODB.Recordset
Dim II As Long

Rs.CursorLocation = adUseClient
Rs.Fields.Append "Col1", adVarChar, 20
Rs.Fields.Append "Col2", adVarChar, 20
Rs.Fields.Append "Col3", adVarChar, 20
Rs.Fields.Append "Col4", adVarChar, 20


Rs.Open "me"




'把表格中的数据搬到数据集,再借助 .Find 即可查找,速度超快

For II = 1 To 1000
'插入1000行
Rs.AddNew
Rs(0).Value = "a" & II & 1
Rs(1).Value = "b" & II & 2
Rs(2).Value = "c" & II & 3
Rs(3).Value = "d" & II & 4
Rs.Update
Next



Rs.MoveFirst

Rs.Find "Col1='a11'"


If Rs.EOF = False Then
MsgBox Rs(0)
End If



Rs.Close


verious 2005-09-10
  • 打赏
  • 举报
回复
完全可以使用数据集查找

如果一定要按照表格中的数据去搜索,那可以考虑直接对比文本的方法~不过这种方式只有一个最好也最笨的算法:遍历查找
northwolves 2005-09-10
  • 打赏
  • 举报
回复
1将MsflexGrid 先复制到一个临时表中
2设置SQL表达式,将查询结果返回到新的MsflexGrid中
3删除临时表
haohaohappy 2005-09-10
  • 打赏
  • 举报
回复
建立一个临时数据库,对数据库进行查询后再导入表格中。
另外试试VSFLEXGRID8.0控件,都说很强,但不知能不能实现你的要求
igxk 2005-09-10
  • 打赏
  • 举报
回复
我也来看看!
Kelishating 2005-09-10
  • 打赏
  • 举报
回复
逐行判断,不符合条件的隐藏,不过好像不适合数量大的情况,汗~~~~幸好我只是遇到这种前提下的排序。
fishmans 2005-09-10
  • 打赏
  • 举报
回复
这个确实不好做
不如先导出成EXCEL或MDB什么,待查过后再显示,导出操作可在后台操作,该不会那么慢吧
atila1978 2005-09-09
  • 打赏
  • 举报
回复
老大,我也想,但是应用情况不是这样的。
这些数据不是存在数据库中的,而是用户实际编辑的数据.
语法分析倒不需要,只是能实现以上效果就可以了。举例用的是一个语句,只是为了举例方便.呵
zlt982001 2005-09-09
  • 打赏
  • 举报
回复
为什么要自己写算法,还要自己解析 语句
用 记录集 搜索不就好
马上要预答辩了,在网上新下了个查重软件,感觉不错,特来推荐按! 说明: ⑴.本软件不能检查已发表文档,因为已发表的文档往往已经到处传播和引用开来。 ⑵.本软件的每检测400字需要6秒钟,一篇8000字的文档至少需要2分钟,需要一点点耐心。 ⑶.本软件检测结果存在误差,用更小的文档块进行检测,可以减少误差,但需要的时间会相应增加,经过我们在多家编辑部的试用情况,块数大小定为200-400字较为合适,此时误差率也是可以接受的,文档相似率一般是比实际的要低。 ⑷.如果某个相似块未显示,说明未检索到相似的文档。 ⑸.本软件每天检测字数不能超过10万字,否则服务器过载,将封锁IP。 ⑹.本软件后台数据库覆盖188亿个网页和490万篇论文。 ⑺.本软件检测文档不得超过4000字,如需要更长的文档支持,需要购买收费版。 ⑻.当软件未能联网时,软件检测按钮将变虚。 ⑼.本免费版由于服务器压力,有时候可能不能正常检测,出现这种情况,请速联系我们,或者由单位出面购买单位版或者豪华版。 ⑽.本软件检测结果只能作为一个参考,可以使用表格右键导出详细检查结果发送给被检查本人,本软件不对是否剽窃做结论,只是告诉你与现存文献相似度高于80%的文字比例所占文章总数比例是多少。 ⑾.我们将持续投入反剽窃的研究,本人已获批国家自科基金进一步反剽窃问题,我们将继续发表一系列论文,以及继续申请相关专利。软件不完善的地方敬请原谅。 欢迎提供反馈意见,我们将持续升级本软件。 我们的联系方式:runorsoft@163.com 我们的博客:http://hi.baidu.com/whusoft 补充: ROST反剽窃系统的技术特点: 1.覆盖面广,通过混合引擎覆盖约188亿个网页和490万篇论文。系统采用自研的ROST WebSpider算法实现了对互联网和期刊网的广度覆盖。但需要提醒您的是,本反剽窃系统不能覆盖所有文献。 2.模糊检测,柔性匹配,不管抄袭者如何替换部分字符,删除部分标点符号,系统都能通过相似度来进行判定,让抄袭者无所遁形。系统采用自研的ROST Similar算法实现高速相似性检测和度量。系统采用自研的QingQing算法提取信息指纹,在P3、512MBPC上,分词速度为13MB/S,已在互联网提供评测版供业内评测。 3.引文及参考文献去除,使得误判的可能性降至最低。 4.分块检测机制,将文章的每一文本块与其他文档的相似度都精确的表示出来了,每一文本块约为200字至400字不等,以红色表示极度相似(相似度大于80%),一目了然,清晰醒目。 5.相似文档模块跟踪技术,可以通过简单操作直接定位相似文档模块位置,直观明了。 6.方便的结果分析功能,自动分析文档相似结果,给出评价意见。 7.支持多种文件格式的文档,包括PDF、DOC、PPT、XLS、TXT等文档。 (PDF文件需另行安装ROST文件格式识别引擎) 8.可将分析结果进行存盘为专有数据文件,不用反复查找浪费时间。 9.应用范围广泛:可用于抄袭鉴定、科技查新、专利查新、引用查询、转载查
(1)本软件不能检查已发表文档,因为已发表的文档往往已经到处传播和引用开来。 ⑵.本软件的每检测400字需要6秒钟,一篇8000字的文档至少需要2分钟,需要一点点耐心。 ⑶.本软件检测结果存在误差,用更小的文档块进行检测,可以减少误差,但需要的时间会相应增加,经过我们在多家编辑部的试用情况,块数大小定为200-400字较为合适,此时误差率也是可以接受的,文档相似率一般是比实际的要低。 ⑷.如果某个相似块未显示,说明未检索到相似的文档。 ⑸.本软件每天检测字数不能超过10万字,否则服务器过载,将封锁IP。 ⑹.本软件后台数据库覆盖188亿个网页和490万篇论文。 ⑺.本软件检测文档不得超过4000字,如需要更长的文档支持,需要购买收费版。 ⑻.当软件未能联网时,软件检测按钮将变虚。 ⑼.本免费版由于服务器压力,有时候可能不能正常检测,出现这种情况,请速联系我们,或者由单位出面购买单位版或者豪华版。 ⑽.本软件检测结果只能作为一个参考,可以使用表格右键导出详细检查结果发送给被检查本人,本软件不对是否剽窃做结论,只是告诉你与现存文献相似度高于80%的文字比例所占文章总数比例是多少。 ⑾.我们将持续投入反剽窃的研究,本人已获批国家自科基金进一步反剽窃问题,我们将继续发表一系列论文,以及继续申请相关专利。软件不完善的地方敬请原谅。 欢迎提供反馈意见,我们将持续升级本软件。 我们的联系方式:runorsoft@163.com 我们的博客:http://hi.baidu.com/whusoft -------------------------------------------------------------------- 反剽窃系统是通过比对源文档和目标文档的相似性给出相似度结果的一种信息处理系统。由武汉大学信息管理学院出版科学系教师沈阳副教授研发的ROST 文档相似性检测工具可以有效检测论文的抄袭相似情况,经过六年的研发,终于推出了功能强劲的6.0版本,在定版过程中得到了武汉大学信息管理学院多位专家教授的宝贵意见。 目前ROST 反剽窃系统6.0版已经投入多家单位进行使用,反应良好,最大程度地杜绝了有抄袭可能的论文发表问世。 ROST反剽窃系统的技术特点: 1.覆盖面广,通过混合引擎覆盖约188亿个网页和490万篇论文。系统采用自研的ROST WebSpider算法实现了对互联网和期刊网的广度覆盖。但需要提醒您的是,本反剽窃系统不能覆盖所有文献。 2.模糊检测,柔性匹配,不管抄袭者如何替换部分字符,删除部分标点符号,系统都能通过相似度来进行判定,让抄袭者无所遁形。系统采用自研的ROST Similar算法实现高速相似性检测和度量。系统采用自研的QingQing算法提取信息指纹,在P3、512MBPC上,分词速度为13MB/S,已在互联网提供评测版供业内评测。 3.引文及参考文献去除,使得误判的可能性降至最低。 4.分块检测机制,将文章的每一文本块与其他文档的相似度都精确的表示出来了,每一文本块约为200字至400字不等,以红色表示极度相似(相似度大于80%),一目了然,清晰醒目。 5.相似文档模块跟踪技术,可以通过简单操作直接定位相似文档模块位置,直观明了。 6.方便的结果分析功能,自动分析文档相似结果,给出评价意见。 7.支持多种文件格式的文档,包括PDF、DOC、PPT、XLS、TXT等文档。 (PDF文件需另行安装ROST文件格式识别引擎) 8.可将分析结果进行存盘为专有数据文件,不用反复查找浪费时间。 9.应用范围广泛:可用于抄袭鉴定、科技查新、专利查新、引用查询、转载查询等多个领域,也可用于追查文献的流传图,绘制文献的传播发布路线。可以为多类学术机构、文献机构以及个人服务。 多年来,学术界的论文著作抄袭剽窃事件屡见不鲜,这是摆在我们面前的一个重大课题。目前多是靠偶然发现后,在书山文海中逐步查找,费力劳神,时效性差,工作量极大。为促进学术事业的健康发展,采用有效科学手段,发现和打击学术腐败,极有必要进行反剽窃和相似信息检测系统的研发和推广,提升刊物和出版单位的学术信誉,净化学术风气。目前国外已深刻认识到学术腐败对科技创新的危害性,也采取了切实有效的技术措施,对侵犯知识产权或违反学术道德的不端行为加以取证。而国内只有极少数专家从事反剽窃的技术与理论研究。武汉大学信息管理学院出版科学系推出的ROST反剽窃系统技术先进,功能实用,是守住学术道德底线的有效工具,能将用户的学术及经济风险降至最低。 研发人员还先后发现了剽窃省力、格式遗留、剽窃趋同、剽窃蔓延、剽窃习惯固定、相关引文剽窃等六种现象,总结了论文剽窃的主要方式,连续推出了三个原型系统,发表了《System of twice-gathering information and Research of information fingerprint Hashtrie》、《The Research of Anti-plagiarism Monitoring System Model》、《Research on Anti-plagiarism System and the Law of Plagiarism》等6篇相关论文,申请了“基于计算机网络的防转载或/和反剽窃监控方法”(专利号:200610019074.5)、“能加快反剽窃或转载文档检测速度的方法”(专利号:200610166577.5已授权)两项相关专利。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧