[create] table t
(标题 varchar(200),内容 varchar(200))insert t values ('8万元创业','创业的资金')
insert t values ('创业艰苦创业难','创业的艰辛谁人知道啊')gocreate function f_sort(@biao varchar(1000),@split varchar(100))
returns int
as
begin
 declare @i int
 select @i=0
 while(charindex(@split,@biao)>0)
 select @i=@i+1,
        @biao=stuff(@biao,charindex(@split,@biao),len(@split),'')
 return(@i)
end
go
select * from t where charindex('创业',标题)>0 order by dbo.f_sort(标题,'创业') descdrop function f_sort
drop table t标题                                                 内容                                                 
-------------------------------------------------- -------------------------------------------------- 
创业艰苦创业难                                            创业的艰辛谁人知道啊
8万元创业                                              创业的资金(所影响的行数为 2 行)

解决方案 »

  1.   

    select *
    from 表
    order by (len(标题)-replace(标题,'创业',''))/len('创业')
             +(len(内容)-replace(内容,'创业',''))/len('创业') desc
      

  2.   

    SQL是没有问题的,但用SQL来实现站内搜索,量一大就会很慢。
      

  3.   

    我重新修改了一下,因为我发现如果存在两个以上的那么要判断一个排名,所以,我觉得根据字符的位置来排含字符相同的。[create] table t
    (标题 varchar(50),内容 varchar(50))insert t values ('8万元创业','创业的资金')
    insert t values ('创业艰苦创业难','创业的艰辛谁人知道啊')
    insert t values ('发挥艰苦创业创业精神','创业的艰辛谁人知道啊')
    insert t values ('发挥艰苦创业的创业精神','创业的艰辛谁人知道啊')
    insert t values ('今天发现了个美人','发现美人的艰辛谁人知道啊')
    gocreate function f_sort(@biao varchar(1000),@split varchar(100))
    returns varchar(30)
    as
    begin
     declare @i int,@j int,@k int
     select @i=0,@j=0
            ,@k=case when charindex(@split,@biao)=1 then 1 else 0 end
      while(charindex(@split,@biao)>0)
     select @i=@i+1,
            @biao=stuff(@biao,1,charindex(@split,@biao)+len(@split)-1,''),
            @j=case when charindex(@split,@biao)=1 then @j+1 else @j end
     return(right(10000+isnull(@i,0),4)+right(10000+@k,4)+right(10000+@j,4))
    end
    go
    select * from t where charindex('创业',标题)>0 order by dbo.f_sort(标题,'创业') desc
    drop function f_sort
       
    标题                                                 内容                                                 
    -------------------------------------------------- -------------------------------------------------- 
    创业艰苦创业难                                            创业的艰辛谁人知道啊
    发挥艰苦创业创业精神                                         创业的艰辛谁人知道啊
    发挥艰苦创业的创业精神                                        创业的艰辛谁人知道啊
    8万元创业                                              创业的资金(所影响的行数为 4 行)drop table t
      

  4.   

    数据量小无所谓啊,量大用SQL是解决不了的。
      

  5.   

    楼上的别误导人哦,测试过?上百万的TXT里面没有索引的遍历,会死人的,呵呵。
      

  6.   

    我的是一个资料数据库,现在有10万数据,如果再过一些时间可能达到几十万,目前的问题就是这些初步的相关性查询的解决,contains(title,'个人所得税') or contains(content,'个人所得税')
    有点慢。
    而且
    配合 samfeng_2003(风云) 的算法,很多的时侯出不来了