SQL Server中全文检索的使用

Author: 刘君 Date: 2001年 40期

#1?牐犚?    言
  ?牐犎募焖魇褂没Э梢愿咝Ъ焖鞔娲⒃谑菘獾腸har、varchar、text、ntext、nchar、nvarchar等数据类型列中的的文本数据。在进行全文检索之前,应建立和填充数据库全文索引。
  #1?牐犎乃饕?
  ?牐犖酥С秩乃饕僮鳎琒QL Server 7.0新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为每步所调用的存储过程名称):
  ?牐?1.启动数据库的全文处理功能(sp_fulltext_database);
  ?牐?2.建立全文目录(sp_fulltext_catalog);
  ?牐?3.在全文目录中注册需要全文索引的表(sp_fulltext_table);
  ?牐?4.指出表中需要全文检索的列名,(sp_fulltext_column);
  ?牐?5.为表创建全文索引(sp_fulltext_table);
  ?牐?6.填充全文目录(sp_fulltext_catalog)。
  ?牐犗旅婢倮得鳎ㄔ诒纠校詔est数据库book表中title列和notes列建立全文索引):
  ?牐?//首先启动SQL Server的全文搜索服务。
  ?牐爑se test //打开数据库
  ?牐爂o
  ?牐?//打开全文索引支持
  ?牐爀xecute sp_fulltext_database 'enable'
  ?牐?//建立全文目录ft_pubs
  ?牐爀xecute sp_fulltext_catalog 'ft_test', 'create'
  ?牐?//为titles表建立全文索引数据元,pk_title为book表中由主键所建立的唯一索引,此参数必需。
  ?牐爀xecute sp_fulltext_table 'book', 'create', 'ft_test', 'pk_title'
  ?牐?//设置全文索引列名
  ?牐爀xecute sp_fulltext_column 'book', 'title', 'add'
  ?牐爀xecute sp_fulltext_column 'book', 'notes', 'add'
  ?牐?//建立全文索引
  ?牐爀xecute sp_fulltext_table 'book', 'activate'
  ?牐?//填充全文索引目录
  ?牐爀xecute sp_fulltext_catalog 'ft_test', 'start_full'
  ?牐爂o
  ?牐犞链耍乃饕?立完毕。
  #1?牐犎募焖?
  ?牐燬QL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。
  ?牐燙ONTAINS语句的功能是在表所有列或指定列中搜索:
  ?牐牎ひ桓鲎只蚨逃铮?
  ?牐牎ひ桓鲎只蚨逃锏那白海?
  ?牐牎び胍桓鲎窒嘟牧硪桓鲎郑?
  ?牐牎ひ桓鲎值呐缮郑?
  ?牐牎ひ桓鲋馗闯鱿值淖帧?
  ?牐燙ONTAINS语句的语法格式为:“CONTAINS({column | *}),'<contains_search_condition>')”,其中column说明被搜索列,使用时说明对表中所有全文索引列进行搜索。Contains_search_condition用以说明CONTAINS语句的搜索内容,其语法格式为:“{<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>} [{{AND|AND NOT|OR}<contains_search_condition>}][…n]”。
  ?牐犗旅婢蛃imple_term和prefix_term参数做一简要说明:
  ?牐爏imple_term指出CONTAINS语句所搜索的单字或短语,当为一个短语时,必须使用双引号作为定界符。其格式为:“{word*|“phrase*”}”。
  ?牐爌refix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:“{“word*” | “phrase*”}。
  ?牐犂纾旅嬗锞浼焖鱞ook表的title列和notes列中包含database或computer字符串的图书名称及其注释信息:
  ?牐爏elect title, notes
  ?牐爁rom book
  ?牐爓here contains(tilte, 'database') or contains(notes, 'database') or contains(title, 'computer') or contains(notes, 'computer')
  ?牐燜REETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。FREETEXT语句的语法格式为:“FREETEXT({column|*} 'freetext_string')。其中,column说明被搜索列,使用*时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。
  ?牐犂纾旅嬗锞涫褂肍REETEXT语句搜索book表中包含 Successful Life字符串的数据行:
  ?牐爏elect title, notes
  ?牐爁rom book
  ?牐爓here freetext(*,'Successful Life')
  ?牐牨酒恼轮饕髁巳募焖鞯墓δ埽樯芰巳乃饕慕?立 以及全文检索语句CONTAINS和FREETEXT的使用。希望能对大家有所帮助,有任何意见请联系:yuheng@public.yc.nx.cn