MSSQL全文检索

来源:互联网 发布:上海市电子学生证淘宝 编辑:程序博客网 时间:2024/05/17 02:06
大家可能都会用  
  select   *   from   tb   where   field   like   '%关键字%'  
  但是一旦数据量大用户多,就会造成查询过慢,因此MS提供一种牺牲空间来换取时间的解决方案。  
  全文检索。原文请看  
  http://www.microsoft.com/china/msdn/archives/library/dnsql2k/html/sql_fulltextsearch.asp  
  我对自己的实现加了些注释:  
  use     PopAsk  
  --使用这个库  
  exec   sp_fulltext_database   'enable'  
  --使这个库允许全文检索  
    
  -----以下对Question_Total表操作------  
  /*  
  首先:要为全文检索目录起个名字,比如Q_ID_Desc  
  然后:要确保你这个表必须有个唯一主键,比如我这个Question_Total表,主键名是:PK_Question_Total  
  剩下就把要检索的列加进去就可以了。  
  */  
  exec   sp_fulltext_catalog   'Q_ID_Desc',   'create'    
  --创建名为Q_ID_Desc的全文检索目录,默认位置。  
  exec   sp_fulltext_table   'Question_Total',   'create',   'Q_ID_Desc',     'PK_Question_Total'  
  --   把Question_Total这个表,创建到全文检索目录中,指定主键。  
  exec   sp_fulltext_column   'Question_Total',   'Title',   'add'  
  --   把Question_Total这个表,要检索的Title列,添加到全文检索中。  
  exec   sp_fulltext_column   'Question_Total',   'Content',   'add'  
  --   把Question_Total这个表,要检索的Content列,添加到全文检索中。  
  exec   sp_fulltext_table   'Question_Total',   'start_full'  
  --   填充全文检索记录。  
  select   FULLTEXTCATALOGPROPERTY('Q_ID_Desc',   'Populatestatus')  
  --   这句可以不用,是检测是否添完状态的,1代表正在进行,0代表完成。  
  -----以下对另外一个表Answer_Total操作------  
  exec   sp_fulltext_catalog   'A_ID_Desc',   'create'    
  --创建名为A_ID_Desc的全文检索目录,默认位置。  
  exec   sp_fulltext_table   'Answer_Total',   'create',   'A_ID_Desc',     'PK_Answer_Total'  
  --   把Question_Total这个表,创建到全文检索目录中,指定主键。  
    
  exec   sp_fulltext_column   'Answer_Total',   'Answer_Content',   'add'  
  --   把Answer_Total这个表,要检索的Answer_Content列,添加到全文检索中。  
  exec   sp_fulltext_table   'Answer_Total',   'start_full'  
  --   填充全文检索记录。  
  select   FULLTEXTCATALOGPROPERTY('A_ID_Desc',   'Populatestatus')  
  --   这句可以不用,是检测是否添完状态的,1代表正在进行,0代表完成。  
  /*  
  执行下列语句用于检索。  
  Select   *  
  FROM   FREETEXTTABLE(Question_Total,   title,   '测试')  
  Select   *  
  FROM   FREETEXTTABLE(Answer_Total,   Answer_Content,   '测试')  
  */  
  躁声字文件  
  C:/Program   Files/Microsoft   SQL   Server/MSSQL/FTDATA/SQLServer/Config/noise.chs  
  我参考别人的做法,只保留了一个?号。  
  还有数据库默认语言排序规则设置成Chinese_PRC_CI_AS  
    
  不要忘记建立一个作业,定时(一般可以每天)为全文检索添加记录。  
  exec   sp_fulltext_table   'Answer_Total',   'start_full'  
      
  exec   sp_fulltext_table   'Question_Total',   'start_full'  
  --   填充全文检索记录。 
原创粉丝点击