请教高手高手高高手:帮小弟猜想一下,搜狗拼音是怎么检索的啊?
老师要求写一个电话本数据库,然后最终实现人名查询,要求如下:
比如人名是[单田芳],汉语拼音是 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