假如我查询   "女孩   北京"就能查询出第一条和第三条(因为这两个关键字那两条记录都包括),   
  查询“旅游”(因为这个关键字那条记录包括)就能查询出第二条”,   
  查询“情感   女孩   北京”就出现第一条和第三条。(因为第一条包括那所有关键字,第三条也比较匹配[符合两个],  我希望可以指定一个匹配度参数,来决定取舍),     最后查询的结果按匹配度排序。(关键字的顺序无所谓)“北京   女孩   情感”和“女孩   情感   北京”算是完全匹配。   
    
  id   title     body     keywords   
  1     a             aa         北京   女孩   情感   
  2     b             bb         旅游   小资   超级女生   
  3     c             cc         情感   北京   餐饮    看到一个答案,但不知道可用否,及如何使用  if   not   object_id('GetRecords')   is   null   
  drop   function   GetRecords   
  go   
    
  create     function     GetRecords(@str     varchar(2000))         
  returns     @Rec     table     (Record     varchar(40))         
  as         
  begin         
  declare     @s     varchar(2000)         
  declare     @r     varchar(2000)         
  declare     @i     varchar(2000)         
  set     @s=@str         
  set     @i=CHARINDEX(',',@s)         
  while     @i>0         
  begin         
      set     @r=left(@s,@i-1)         
      insert     @Rec     values     (@R)         
      set     @s=right(@s,len(@s)-@i)         
      set     @i=CHARINDEX(',',@s)         
  end         
  if     len(@s)>0         
      insert     @Rec     values     (@s)         
    
  return         
  end         
  go   
    
  --以下为存储过程   
  create   proc   sp_search   
  @keywords   nvarchar(200),   
  @匹配度   int   
  as   
  --找出所有要查询的词   
  select   *   from     
  (select   id,title,body,keywords,count(1)   [匹配度]   from   aaa   a   
  ,dbo.GetRecords(@keywords)   b   
  where   charindex(b.record,a.keywords)>0   
  group   by   id,title,body,keywords)a   
  where     匹配度>=@匹配度   
  order   by   匹配度   
  GO   
    
  --调用实例及结果   
  exec   sp_search   '情感,女孩,北京',2   
    
  3 c cc 情感   北京   餐饮 2   
  1 a aa 北京   女孩   情感 3