类似百度搜索的“您要找的是不是?”问题

yangbo0801 2008-04-21 11:34:54
我做个点餐网站,搜索部分想做成类似百度的那种错别字纠正搜索,比如:搜索“肯德基”,如果用户写成“肯德鸡”,也要求能搜索出关于“肯德基”的文章,或者询问用户是不是要找“肯德基”。只要是发音正确就能搜索出,哪怕写成“垦的吉”,也能搜索出“肯德基”。应该怎么做呢?
...全文
4421 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttnkhzhangqi123 2008-12-19
  • 打赏
  • 举报
回复
汉字相似度可以做出来,那拼音相似度具体思路如何?也就是百度上输入拼音自动匹配正确汉字。拼音的读音太多呵呵。不知道在SQL里如何转汉字?
呵呵见笑了,这是我做的类似百度搜索的垂直搜索引擎。http://search.xdnice.com
^_^ QQ:78779027
lurongustc 2008-08-21
  • 打赏
  • 举报
回复
我觉得这个根本不用数据库,实际上用c++的map容器就足够了。
cson_cson 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 utpcb 的回复:]
我怀疑他们把新华字典做成数据库了哈哈 先转成拼音!再转成汉字!这个市其中的一环
[/Quote]
--应该比新华字典的字多些,如果是完整的三级字库,好像有2万多字。
utpcb 2008-04-22
  • 打赏
  • 举报
回复
我怀疑他们把新华字典做成数据库了哈哈 先转成拼音!再转成汉字!这个市其中的一环
cson_cson 2008-04-22
  • 打赏
  • 举报
回复
insert py select left(tt,1),substring(tt+' ',2,charindex(' ',tt+' ')-1) from tt_text
where patindex('%[a-zA-Z]%',TT) = 2
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
对,txt里有些词组的该怎么处理?最好不要给你分,那还是可以给喽
侨办qiaoban
侨胞qiaobao
峭壁qiaobi
敲边鼓qiaobiangu
瞧不起qiaobuqi
憔悴qiaocui
敲打qiaoda
瞧得起qiaodeqi
巧夺天工qiaoduotiang
巧妇难为无米之炊qiaofunanwei
巧干qiaogan
巧合qiaohe
侨汇qiaohui
巧计qiaoji
敲击qiaoji
瞧见qiaojian
侨居qiaoju
侨眷qiaojuan
俏丽qiaoli
侨联qiaolian
桥梁qiaoliang
巧立名目qiaolimingmu
窍门qiaomen
巧妙qiaomiao
侨民qiaomin
桥牌qiaopai
乔迁qiaoqian
悄悄qiaoqiao
巧取豪夺qiaoquhaoduo
悄然qiaoran
翘首qiaoshou
翘首以待qiaoshouyida
翘尾巴qiaoweiba
侨务办公室qiaowubangon
侨乡qiaoxiang
巧言令色qiaoyanlings
巧用qiaoyong
巧遇qiaoyu
cson_cson 2008-04-22
  • 打赏
  • 举报
回复
为什么我的这一句insert py select left(tt,1),substring(tt+' ',2,charindex(' ',tt+' ')-1) from tt_text报错呢???
服务器: 消息 8152,级别 16,状态 9,行 5
将截断字符串或二进制数据。
语句已终止。
-------------------------------------------------------------------------------------
你的文本文件不太规范,有些问题,超长了,检查一下。

还有PY表需要建hz索引,是不是就加个自动编号的主键就行了?
-------------------------------------------------
与主键无关,当然有主键更好,如果你用的是例子中的表名和字段名,可以如下建索引。
create index index_py_hz on py(hz) 就行了,主要是为了提高高索引性能。

最好不要给我分。
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
TO:cson_cson
为什么我的这一句insert py select left(tt,1),substring(tt+' ',2,charindex(' ',tt+' ')-1) from tt_text报错呢???
服务器: 消息 8152,级别 16,状态 9,行 5
将截断字符串或二进制数据。
语句已终止。


还有PY表需要建hz索引,是不是就加个自动编号的主键就行了?
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
TO:cson_cson
你不要再冒充CSDN工作人员了!!!你哪里是CSDN工作人员,你就是神!!!真是太谢谢你了!!!!哦对了,你真是CSDN工作人员么?我真想把分给你!!!
cson_cson 2008-04-22
  • 打赏
  • 举报
回复
注意,PY表需要建hz索引。
cson_cson 2008-04-22
  • 打赏
  • 举报
回复

create table py(hz varchar(10),py varchar(20))
create table tt_text(tt varchar(1000))
BULK INSERT tt_text from 'e:\py.txt'
insert py select left(tt,1),substring(tt+' ',2,charindex(' ',tt+' ')-1) from tt_text
select * from py
/*
hz py
---------- --------------------
肯 ken
啃 ken
恳 ken
垦 ken
裉 ken
垠 ken
墾 ken
懇 ken
掯 ken
狠 ken
珢 ken
硍 ken
肎 ken
肻 ken
褃 ken
豤 ken
貇 ken
錹 ken
頎 ken
颀 ken
齦 ken
龈 ken
*/
cson_cson 2008-04-22
  • 打赏
  • 举报
回复
先导入为一个字段,然后分解,多音字占不考虑。
create table py(hz varchar(10),py varchar(20))
create table tt_text(tt varchar(1000))
BULK INSERT tt_text from 'e:\py.txt'
insert py select left(tt,1),substring(tt+' ',2,charindex(' ',tt+' ')-1) from tt_text
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
谁能直接发给俺一个SqlServer或Access格式的汉字拼音表,一列汉字,一列拼音的那种
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
肯ken
啃ken
恳ken
垦ken
裉ken
垠ken
墾ken
懇ken
掯ken
狠ken hen
珢ken
硍ken
肎ken
肻ken
褃ken
豤ken
貇ken
錹ken
頎ken
颀ken
齦ken
龈ken

像这样格式的txt文件该怎么导入SqlServer数据库啊,我用SqlServer的DTS(导入导出工具)导入到时候,如果选“带分隔符”的话,就只能一行全部导入到一列里,选“固定字段”的话,第一列可以导入一个汉字,第二列也同样只能导入一个英文字符。
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
我的sql水平真是停留在小学阶段,买的邹建大牛的《SqlServer2000开发与管理应用实例》都没看几页,bs一下自己!下来一定要认真的读完那本书
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复

insert py select left(tt,1),substring(tt+' ',2,charindex(' ',tt+' ')-1) from tt_text
where patindex('%[a-zA-Z]%',TT) = 2

这段我明白了,妙哉!!
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
那这样返回的将类似'de-di-do'的数据?
还有

insert py select left(tt,1),substring(tt+' ',2,charindex(' ',tt+' ')-1) from tt_text
where patindex('%[a-zA-Z]%',TT) = 2

中where部分是什么意思?
-狙击手- 2008-04-22
  • 打赏
  • 举报
回复
累加PY到@PY中
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
错了上面的是我改过的
您的原函数是:

--再建一函数:汉字转拼音
create function dbo.getpy(@c varchar(20))
returns varchar(1000)
as
begin
declare @py varchar(1000),@i int
select @py = '',@i = 1
while @i<=len(@c)
begin
select @py = @py+'-'+py from py where hz = substring(@c,@i,1)
set @i = @i +1
end
return @py
end

请问@py+'-'+py是什么意思?这样好像有多音字就查不出来,我把它换成py好像允许关键词语中有一个多音字
yangbo0801 2008-04-22
  • 打赏
  • 举报
回复
TO:cson老师
您的

--再建一函数:汉字转拼音
CREATE function dbo.getpy(@c varchar(20))
returns varchar(1000)
as
begin
declare @py varchar(1000),@i int
select @py = '',@i = 1
while @i<=len(@c)
begin
select @py = py from py where hz = substring(@c,@i,1)
set @i = @i +1
end
return @py
end


@py+'-'+py是什么意思?
加载更多回复(27)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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