zoukankan      html  css  js  c++  java
  • SQL Server 2000中全文检索的使用(续)

    KeyLife富翁笔记
    作者: HongYuan
    标题: SQL Server 2000中全文检索的使用(续)
    关键字: 全文检索、数据库、SQL SERVER 2000
    分类: 个人专区
    密级: 公开
    (评分: , 回复: 0, 阅读: 550) »»

    标题: SQL Server 2000中全文检索的使用(续)

    代码:T-SQL

    出自:http://www.winmag.com.cn/forum/bestview.asp?boardid=11&id=487

    摘要:从SQL Server 7.0起,到如今的SQL Server 2000终于具备了全文检索功能,使用户可以高效地检索存储在数据库char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。

    --------------------------------------------------------------------------------
    引言

    微软的SQL Server数据库是一个在中低端企业应用中占有广泛市场的关系型数据库系统,它以简单、方便、易用等特性深得众多软件开发人员和数据库管理人员的钟爱。但SQL Server 7.0以前的数据库系统由于没有全文检索功能,致使无法提供像文本内容查找此类的服务,成为一个小小的遗憾。从SQL Server 7.0起,到如今的SQL Server 2000终于具备了全文检索功能,使用户可以高效地检索存储在数据库char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。

    建立全文索引

    在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,SQL 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)。

    下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引。

    use test //打开数据库

    //打开全文索引支持,启动SQL Server的全文搜索服务

    execute sp_fulltext_database ‘enable’

    //建立全文检索目录ft_test

    execute sp_fulltext_catalog ‘ft_test’, ‘create’

    为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。

    execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’

    //设置全文索引列名

    execute sp_fulltext_column ‘book’, ‘title’, ‘add’

    execute sp_fulltext_column ‘book’,‘notes’, ‘add’

    //建立全文索引

    execute sp_fulltext_table ‘book’, ‘activate’

    //填充全文索引目录

    execute sp_fulltext_catalog ‘ft_test’, ‘start_full’

    至此,全文索引建立完毕。

    进行全文检索

    SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。

    CONTAINS语句的语法格式为:

    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]

    下面就simple_term和prefix_term参数做简要说明:

    simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:

    {‘word’|“ phrase”}

    prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:

    {“word*” | “phrase*”}

    例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:

    select title, notes

    from book

    where contains(tilte, ‘database’) or contains(notes,‘database’)

    or contains(title,‘computer’) or contains(notes,‘computer’)

    FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。

    FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’)

    其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。

    例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:

    select title, notes

    from book

    where freetext(*,‘Successful Life’)


    2005-9-19 17:08:48   
  • 相关阅读:
    公用表表达式(CTE)的递归调用
    c# 如何让tooltip显示文字换行
    实战 SQL Server 2008 数据库误删除数据的恢复
    SQL SERVER数据库中 是否可以对视图进行修改删除
    asp.net中实现文件批量上传
    sql server 2008学习2 文件和文件组
    sql server 2008学习3 表组织和索引组织
    sql server 2008学习4 设计索引的建议
    sql server 2008学习10 存储过程
    .net 调用 sql server 自定义函数,并输出返回值
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/568253.html
Copyright © 2011-2022 走看看