我有info_list表,有3个字段id,title,content
我在表上建立了全文检索,右键-〉唯一索引-〉选择字段(title,content)->创建全文目录(ft_info)->新建调度(我没建)-〉下一步-〉完成然后我手动在全文目录上右键启动完全填充。在查询分析器里面select * from info_list where contains(title,'tighter')测试 //表中有数据但是执行结果为空,不知道什么原因本人第一次用全文检索,请各位大哥大姐帮帮忙

解决方案 »

  1.   

    一个完整的SQL   SERVER数据库全文索引的示例。(以pubs数据库为例) 首先,介绍利用系统存储过程创建全文索引的具体步骤: 1)   启动数据库的全文处理功能                     (sp_fulltext_database) 
    2)   建立全文目录                                             (sp_fulltext_catalog) 
    3)   在全文目录中注册需要全文索引的表     (sp_fulltext_table) 
    4)   指出表中需要全文索引的列名                 (sp_fulltext_column) 
    5)   为表创建全文索引                                     (sp_fulltext_table) 
    6)   填充全文目录                                             (sp_fulltext_catalog) 
    ---------********示例********------------- 
    以对pubs数据库的title和notes列建立全文索引,之后使用索引查询title列或notes列中包含有datebase   或computer字符串的图书名称: 在这之前,需要安装Microsoft   Search服务,启动SQL   server全文搜索服务 
    user   pubs   --打开数据库 
    go 
    --检查数据库pubs是否支持全文索引,如果不支持 
    --则使用sp_fulltext_database   打开该功能 
    if(select   databaseproperty('pubs','isfulltextenabled'))=0   
        execute   sp_fulltext_database   'enable' --建立全文目录FT_PUBS 
    execute   sp_fulltext_catalog   'FT_pubs','create' --为title表建立全文索引数据元 
    execute   sp_fulltext_table   'title','create','FT_pubs','UPKCL_titleidind' --设置全文索引列名 
    execute   sp_fulltext_column   'title','title','add' 
    execute   sp_fulltext_column   'title','notes','add' --建立全文索引 
    --activate,是激活表的全文检索能力,也就是在全文目录中注册该表 
    execute   sp_fulltext_table   'title','activate' --填充全文索引目录 
    execute   sp_fulltext_catalog   'FT_pubs','start_full' 
    go --检查全文目录填充情况 
    While   fulltextcatalogproperty('FT_pubs','populateStatus') <> 0 
    begin --如果全文目录正处于填充状态,则等待30秒后再检测一次 
    waitfor   delay   '0:0:30' 
    end --全文目录填充完成后,即可使用全文目录检索 select   title 
    form 
    where   CONTAINS(title,'database') 
    or   CONTAINS(title,'computer') 
    or   CONTAINS(notes,'database') 
    or   CONTAINS(notes,'database') 
    '--------------以下介绍一下全文操作类的系统存储过程 
    过程名称:sp_fulltext_service 
    执行权限:serveradmin或系统管理员 
    作         用:设置全文搜索属性 
    过程名称:sp_fulltext_catalog 
    执行权限:db_owner及更高角色成员 
    作         用:创建和删除一个全文目录,启动或停止一个全文目录的索引操作 
    过程名称:sp_fulltext_database 
    执行权限:db_owner角色成员 
    作         用:初始化全文索引或删除数据库中所有全文目录 
    过程名称:sp_fulltext_table 
    执行权限:db_ddladnmin或db_owner角色成员 
    作         用:将一个表标识为全文索引表或非全文索引表 
    过程名称:sp_fulltext_column   
    执行权限:db_ddladnmin角色成员 
    作         用:指出一个全文索引表中的那些列假如或退出全文索引 
      

  2.   

    填充全文索引目录 后检查全文目录填充情况 While   fulltextcatalogproperty('FT_pubs','populateStatus') <> 0 
    begin --如果全文目录正处于填充状态,则等待30秒后再检测一次 
    waitfor   delay   '0:0:30' 
    end 
    否则不会得到你想要的结果 
      

  3.   

    create   table   testIndex 

              id   int   identity(1,1)   primary   key, 
              nm   varchar(100)   unique   not   null, 
              sex   varchar(10) 

    create UNIQUE index UQ__testIndex__0DAF0CB0
    on testindex(nm)insert   into   testindex   
              select   'aaabbb','m'   union   all 
              select   'bbb','w'   union   all 
              select   'ccc','w'   union   all 
              select   'ddd','m' 
    insert   into   testindex   
              select   '麦蒂未伤愈中途退出训练复出时间再度成疑','北京'  
    go
    --创建全文目录 
    sp_fulltext_catalog   'abc','create'     
    go
    --创建全文索引(‘表名‘,’创建/删除‘,’全文目录名‘,’约束名‘) 
    sp_fulltext_table   'testindex','create','abc','UQ__testIndex__0DAF0CB0' 
    go
    --添加列到全文索引(‘表名‘,’列名‘,’添加/删除‘) 
    sp_fulltext_column   'testindex','nm','add' go
    --建立全文索引
    --activate,是激活表的全文检索能力,也就是在全文目录中注册该表
    execute sp_fulltext_table 'testindex','activate'
    go
    --填充全文索引目录
    execute sp_fulltext_catalog 'abc','start_full'
    go--检查全文目录填充情况
    While fulltextcatalogproperty('abc','populateStatus')<>0
    begin--如果全文目录正处于填充状态,则等待30秒后再检测一次
    waitfor delay '0:0:30'
    end--全文目录填充完成后,即可使用全文目录检索
    SELECT   *   FROM   testindex   WHERE   CONTAINS(nm,   '麦蒂') /*id          nm                                                                                                 sex        
    ----------- --------------------------------------------- ------------------------------------------------ ---------- 
    5           麦蒂未伤愈中途退出训练复出时间再度成疑                                                             北京(所影响的行数为 1 行)
    */
    insert   into   testindex   
              select   '麦蒂未伤愈中途退出训练复出时间再度成疑12121','北京'  
    go
    SELECT   *   FROM   testindex   WHERE   CONTAINS(nm,   '麦蒂')
    -----No result
    /*id          nm                                                                                                 sex        
    ----------- --------------------------------------------- ------------------------------------------------ ---------- 
    5           麦蒂未伤愈中途退出训练复出时间再度成疑                                                             北京(所影响的行数为 1 行)
    */
    go--填充全文索引目录
    execute sp_fulltext_catalog 'abc','start_full'
    go
    --检查全文目录填充情况
    While fulltextcatalogproperty('abc','populateStatus')<>0
    begin--如果全文目录正处于填充状态,则等待30秒后再检测一次
    waitfor delay '0:0:30'
    end
    SELECT   *   FROM   testindex   WHERE   CONTAINS(nm,   '麦蒂')go
    /*id          nm                                                                                                   sex        
    ----------- ---------------------------------------------------------------------------------------------------- ---------- 
    6           麦蒂未伤愈中途退出训练复出时间再度成疑12121                                                                             北京
    5           麦蒂未伤愈中途退出训练复出时间再度成疑                                                                                  北京(所影响的行数为 2 行)*/
    sp_fulltext_table  'testindex','drop'
    go
    sp_fulltext_catalog   'abc','drop'  
    go  
    drop table testIndex