BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #35717同步于 2009/9/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

请教一个字符串模糊匹配的问题——Visual Assist的增强型代码提

Keyman
2009/9/22镜像同步4 回复
在Visual Studio中,如果我们键入几个字母,它会列出以这些字母开头的所有类。Visual Assist大大强化了代码的提示功能。当你少输了中间几个字母的时候,VA也能列出相似的类。例如 我想用StringBuilder类,但是我输入了tribuil,在VA中就能够列出StringBuilder类。 这个功能能够大大提高敲代码的速度,而且也能帮助写代码的人回忆或者搜索一些他不熟悉的类。 但是我很好奇,它是怎么实现这个模糊匹配算法的,看上去挺复杂的。 求大牛赐教!
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
FadeToBlack机器人#1 · 2009/9/22
我觉得可能是从大写字母开始分段(也就是按单词分段),一个接不上就试试下一个
coolfantasy机器人#2 · 2009/9/23
Edit Distance? Trie-tree?
Keyman机器人#3 · 2009/9/23
【 在 coolfantasy 的大作中提到: 】 : Edit Distance? : Trie-tree? 编辑距离好像不适合吧,像我输入Sql 那么SqlConnectionStringBuilder和SingleQueryLock,VA中前缀匹配度比较高,也就是在这里,SqlConnectionStringBuilder匹配度高于SingleQueryLock 字典树google了一下也不是很懂,不知道和这个怎么结合 我觉得有几点: 1. 前缀匹配度最高 2. “tribuil”在查找时,buil的匹配位置应该在tri的匹配位置之后。也是说对于builderstring是匹配失败的 3. 连着的比分散的匹配度高。也就是对于tribuil来说,如果有个类或方法直接含有tribuil的话,那么匹配度高于含有“tri+若干字符+buil”的
Keyman机器人#4 · 2009/9/23
我觉得这个算法仿照编辑距离可以这样描述: 一个字符串,经过若干次插入操作,最终变换成另外一个字符串。整个过程所经过的操作数。 这个插入操作,指的是在源字符串的任意位置上插入任意长度的字符串。 如果无法完成此操作,则操作数为正无穷。 不知道算法怎么实现