首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

高手高高手:帮小弟猜想一下,搜狗拼音是如何检索的啊

2012-03-28 
请教高手高手高高手:帮小弟猜想一下,搜狗拼音是怎么检索的啊?老师要求写一个电话本数据库,然后最终实现人

请教高手高手高高手:帮小弟猜想一下,搜狗拼音是怎么检索的啊?
老师要求写一个电话本数据库,然后最终实现人名查询,要求如下:

  比如人名是[单田芳],汉语拼音是 shan tian fang
1.依次输入s/h/a/n/t/i/a/n/f/a/n/g,到任意位置截止,能够显示所有符合匹配的人名;
2.依次输入s/t/f,显示所有符合匹配人名;
3.依次输入 s/h/t/f,任意位置截止,能够显示匹配人名;
4.输入s/h/a/t/f 能够显示匹配人名;
5.输入 s/t/i/a/n/f,也显示匹配人名;
6.【单田芳】的【单】是个多音字,所以我按照上面输入 dan tian fang也匹配; 
7.总之只要是按顺序输入匹配的都能够实现。

打字的时候突然发现搜狗拼音输入法是完全符合功能需求,想了半天也不知所以。
哪位高手高手高高手帮小弟建议一下哈,究竟该怎么设计算法啊,我觉得算法包含两部分:
1.怎么存储这些人名;
2.搜索的时候怎么搜索才符合以上要求。
麻烦诸位啦...
 

[解决办法]

SQL code
create function [dbo].[m_select](@str varchar(2000))     RETURNS varchar(2000)  as       BEGIN       declare @count int    select @count=len(@str)    declare @i int    set @i=1;    declare @newchar nvarchar(200)    declare @nn nvarchar(300)    set @nn=''    while @i<@count+1    begin    set @newchar=substring(@str,@i,1)+'%'    set @nn=@nn+@newchar    set @i=@i+1;    end    declare @hh nvarchar(200)    set @hh='%'+@nn     RETURN  @hh END 

热点排行