如何按字段匹配关键字的程度对记录进行排序?

NewBody 2004-11-30 12:21:56
用户输入关键字后,系统从数据表中进行查询,查询的结果中可能存在多条记录,如何做到按记录字段匹配关键字的程度进行排序.比如关键字为"域名",表记录如下:

网址 描述
url1 提供域名注册(国际域名/中国域名/中文域名/动态域名)
url2 提供地域名称查询
url3 提供虚拟主机/域名注册(次级域名任意设置)/企业邮局/

这三条记录中匹配关键字的次数分别是5次/1次/2次,我想依此得到url1、url3、url2这样排序的结果集。请大家帮我。
...全文
139 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
超级大笨狼 2004-12-25
用全文检索。
http://community.csdn.net/Expert/topic/3601/3601481.xml?temp=.9668695
其中rank值就是匹配的程度。
回复
NewBody 2004-12-06
我跟大家学到不少东西,谢谢各位!

TO: zlj113((米老鼠)抵制日货,从自己做起!)
replace函数在Access中与在VBScript中有不能的含义,当按第二和第三种方法执行时报告replace函数错误.
回复
zlj113 2004-12-04
呵呵,又学到一个

方法三:

select * from Net order by len(replace(描述,'域名','域名2'))-len(描述) desc

这种方法比方法二更简单

回复
myboll 2004-12-04
zlj113((米老鼠)抵制日货,从自己做起!) 你的方法在我的里面都没有用.

高手们来帮我一下啊:

http://community.csdn.net/Expert/topic/3607/3607775.xml?temp=.6495783

语言请用 ASP或asp.net,数据库MSSQL或ACCESS选择哪一个都行.
回复
zlj113 2004-12-04
方法一:用自定义函数

--Drop Table Net
--Drop Function Num


Create Table Net ([网址] varchar(10),[描述] varchar(100))

Insert Net ([网址],[描述])

Select 'url','提供域名注册(国际域名/中国域名/中文域名/动态域名)'
Union All select'url2', '提供地域名称查询'
Union All select'url3','提供虚拟主机/域名注册(次级域名任意设置)/企业邮局/'





create function Num(@Description varchar(100),@KeyWord varchar(10))

returns varchar(80)

as

begin

declare @str varchar(800),@I Int,@Len Int,@Num int
set @str=''
set @i=0
set @len=len(@KeyWord)

set @Num=0

While @i<Len(@Description)

Begin

select @Str=charindex(@KeyWord,@Description,@i) from Net Where [描述] like '%'+@Keyword+'%'

if @str>0

begin

set @Num=@Num+1

end

Set @I=@I+@str+@len

End

return (@Num)

end




select * from Net order by dbo.Num([描述],'域名') desc

方法二:
我猜你都会有这种的了,N简单,只是没想到,偶也是别人教我的

select * from net order by (len(描述)-len(replace(描述,'域名','')))/len('域名') desc
回复
jnnxwjh 2004-12-03
我猜真正的搜索引擎应该不是用楼主的想法实现查询的.
回复
jnnxwjh 2004-12-03
用Access不能实现,花钱少,功能也相对较弱.
最好能通过巧妙的算法实现.
回复
NewBody 2004-12-03
再请高手出招.
回复
NewBody 2004-12-01
还没能解决,自己顶一下
回复
NewBody 2004-12-01
TO: wangjinmin1982

怎么排序呢?
回复
wangjinmin1982 2004-12-01
like '%"&word&"%'

word 是关键字
回复
wangjinmin1982 2004-12-01
用模糊查询~~

内容不会重复的
回复
NewBody 2004-12-01
谢谢两位.
---------------------------
TO: jiank(金蛇郎君来杀鸡)

正如你所说,你的方法效率不高

---------------------------
TO: cuixiping(无心)

Access中怎么解决?
回复
jiank 2004-11-30
可以先全部取出来,再比较处理,仅适用于量不多的情况下
回复
cuixiping 2004-11-30
写一个用户自定义函数,ms sqlserver 支持用户自定义函数。
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-11-30 12:21
社区公告
暂无公告