需求,2组数据
基本数据:
微软(中国)有限公司
北京三立众合科技发展有限责任公司
合肥铭云软件科技有限公司
慧舟软件技术(上海)有限公司
昆明海惠通科技有限公司
深圳市奥怡轩实业有限公司
无锡艾斯科信息技术有限公司
厦门市领航科技有限公司
青岛北兴电子科技有限公司需要匹配的数据:
无锡艾斯科信息技术
厦门市领航科技有限公司
北兴电子科技有限公司
北京艾提
北京迈拓晨峰科技发展有限公司
宁波胜达高科信息工程有限公司用需要匹配的数据去基本数据库里查询匹配相似度最高的记录
我现在的做法是把一些区域性的字符都去掉,还有一些什么有限公司的字符都去掉,只保留关键字
然后逐字匹配,逐个字的拼音进行匹配这样就会有北京XXX公司和上海XXX公司前完全匹配,其实这是2个完全不一样的公司
不知道大家还有什么方法
比如分词匹配(有免费的分词组件吗?)谢谢

解决方案 »

  1.   

    试试我这个,但没拼音的
    create  function Comparability(@a varchar(1000),@b varchar(1000)) 
    RETURNS int
    begin
    declare @al int,@bl int,@i int,@ac int,@bc int
    select @al=len(@a),@bl=len(@b),@i=1,@ac=0,@bc=0while @i<=@al
    begin
        if charindex(substring(@a,@i,1),@b)>0
          select @ac=@ac+1
        select @i=@i+1
    endselect @i=1while @i<=@bl
    begin
        if charindex(substring(@b,@i,1),@a)>0
          select @bc=@bc+1
        select @i=@i+1
    end  return (@ac+@bc)*100/(@al+@bl)
    end
    goselect dbo.Comparability('^_^谢客气','^^谢谢气')go
    create table a
    (
    a varchar(100)
    )
    go
    insert into a
    select 
    '微软(中国)有限公司'
    union
    select 
    '北京三立众合科技发展有限责任公司'
    union
    select 
    '合肥铭云软件科技有限公司'
    union
    select 
    '慧舟软件技术(上海)有限公司'
    union
    select 
    '昆明海惠通科技有限公司'
    union
    select 
    '深圳市奥怡轩实业有限公司'
    union
    select 
    '无锡艾斯科信息技术有限公司'
    union
    select 
    '厦门市领航科技有限公司'
    union
    select 
    '青岛北兴电子科技有限公司'
    gocreate table b
    (
    b varchar(100)
    )
    go
    insert into b
    select 
    '无锡艾斯科信息技术'
    union select
    '厦门市领航科技有限公司'
    union select
    '北兴电子科技有限公司'
    union select
    '北京艾提'
    union select
    '北京迈拓晨峰科技发展有限公司'
    union select
    '宁波胜达高科信息工程有限公司' 
    go
    select * from
    (
    select a.a,b.b ,dbo.Comparability(a.a,b.b) as xsd
    from a join b on 1=1
    ) as ab
    order by xsd deschttp://www.mybuffet.cn
      

  2.   

    结果如下:厦门市领航科技有限公司 厦门市领航科技有限公司 100
    青岛北兴电子科技有限公司 北兴电子科技有限公司 90
    无锡艾斯科信息技术有限公司 无锡艾斯科信息技术 81
    北京三立众合科技发展有限责任公司 北京迈拓晨峰科技发展有限公司 66
    昆明海惠通科技有限公司 北兴电子科技有限公司 57
    厦门市领航科技有限公司 北兴电子科技有限公司 57
    合肥铭云软件科技有限公司 北兴电子科技有限公司 54
    昆明海惠通科技有限公司 厦门市领航科技有限公司 54
    北京三立众合科技发展有限责任公司 北兴电子科技有限公司 53
    青岛北兴电子科技有限公司 北京迈拓晨峰科技发展有限公司 53
    无锡艾斯科信息技术有限公司 北兴电子科技有限公司 52
    青岛北兴电子科技有限公司 厦门市领航科技有限公司 52
    合肥铭云软件科技有限公司 厦门市领航科技有限公司 52
    无锡艾斯科信息技术有限公司 宁波胜达高科信息工程有限公司 51
    无锡艾斯科信息技术有限公司 厦门市领航科技有限公司 50
    昆明海惠通科技有限公司 北京迈拓晨峰科技发展有限公司 48
    厦门市领航科技有限公司 北京迈拓晨峰科技发展有限公司 48
    合肥铭云软件科技有限公司 北京迈拓晨峰科技发展有限公司 46
    无锡艾斯科信息技术有限公司 北京迈拓晨峰科技发展有限公司 44
    北京三立众合科技发展有限责任公司 厦门市领航科技有限公司 44
    深圳市奥怡轩实业有限公司 厦门市领航科技有限公司 43
    慧舟软件技术(上海)有限公司 北兴电子科技有限公司 41
    微软(中国)有限公司 北兴电子科技有限公司 40
    厦门市领航科技有限公司 宁波胜达高科信息工程有限公司 40
    昆明海惠通科技有限公司 宁波胜达高科信息工程有限公司 40
    慧舟软件技术(上海)有限公司 厦门市领航科技有限公司 40
    微软(中国)有限公司 厦门市领航科技有限公司 38
    青岛北兴电子科技有限公司 宁波胜达高科信息工程有限公司 38
    合肥铭云软件科技有限公司 宁波胜达高科信息工程有限公司 38
    深圳市奥怡轩实业有限公司 北兴电子科技有限公司 36
    慧舟软件技术(上海)有限公司 北京迈拓晨峰科技发展有限公司 35
    微软(中国)有限公司 北京迈拓晨峰科技发展有限公司 33
    北京三立众合科技发展有限责任公司 宁波胜达高科信息工程有限公司 33
    微软(中国)有限公司 宁波胜达高科信息工程有限公司 33
    深圳市奥怡轩实业有限公司 宁波胜达高科信息工程有限公司 30
    深圳市奥怡轩实业有限公司 北京迈拓晨峰科技发展有限公司 30
    慧舟软件技术(上海)有限公司 宁波胜达高科信息工程有限公司 28
    北京三立众合科技发展有限责任公司 北京艾提 20
    厦门市领航科技有限公司 无锡艾斯科信息技术 20
    昆明海惠通科技有限公司 无锡艾斯科信息技术 20
    青岛北兴电子科技有限公司 无锡艾斯科信息技术 19
    合肥铭云软件科技有限公司 无锡艾斯科信息技术 19
    慧舟软件技术(上海)有限公司 无锡艾斯科信息技术 17
    北京三立众合科技发展有限责任公司 无锡艾斯科信息技术 16
    青岛北兴电子科技有限公司 北京艾提 12
    无锡艾斯科信息技术有限公司 北京艾提 11
    厦门市领航科技有限公司 北京艾提 0
    深圳市奥怡轩实业有限公司 北京艾提 0
    微软(中国)有限公司 北京艾提 0
    合肥铭云软件科技有限公司 北京艾提 0
    慧舟软件技术(上海)有限公司 北京艾提 0
    昆明海惠通科技有限公司 北京艾提 0
    深圳市奥怡轩实业有限公司 无锡艾斯科信息技术 0
    微软(中国)有限公司 无锡艾斯科信息技术 0http://www.mybuffet.cn
      

  3.   

    请参考:
    http://blog.csdn.net/lkf0217/archive/2009/08/20/4466952.aspx