zoukankan      html  css  js  c++  java
  • SQLServer全文索引

    -------------------------

    ----全文索引使用小例------

    分别使用SQL2000和SQL2005

    ------------------------

    使用场合:复杂化查询 文本数据存储在数据列中

    --环境

    use poofly

    go

    CREATE TABLE HELLO(ID INT NOT NULL PRIMARY KEY,HELLO NVARCHAR(50))

    ----SP_HELPINDEX HELLO(主键约束即唯一索引名PK__HELLO__3214EC271DE57479)

    ps:这里的唯一约束我们最好建立在4B大小的整数列上 一般自增列是不错的选择,这样可以减少文件系统的Mircosoft搜索服务的资源需求。

    GO

    INSERT HELLO SELECT 1,'TEST'

     

     

    1、要启用全文索引功能首先需要安装full text search全文索引服务

     

    2、启动full text search服务

     

    3、检查数据库全文索引是否开启,没有开启则使用sp_fulltext_database 打开该功能

    if(select databaseproperty('poofly','isfulltextenabled')) =0

    execute sp_fulltext_database 'enable'

     

    --以下是的建立全文索引小例子

    4、创建全文目录

    EXEC SP_FULLTEXT_CATALOG 'POOFLY','CREATE'

     

    5、注册HELLO表,建立全文索引数据元

    EXEC sp_fulltext_table 'HELLO','create','POOFLY','PK__HELLO__3214EC271DE57479'

     

    6、指定支持全文索引的列名

    EXEC sp_fulltext_column 'HELLO','HELLO','add'

     

    7、为表创建(激活)全文索引

    --activate,是激活表的全文检索能力,也就是在全文目录中注册该表

    EXEC sp_fulltext_table 'HELLO','activate'

     

    8、启动对全文目录的完全填充

    --后期是使用更改跟踪或者增量填充维护索引

    --EXEC sp_fulltext_catalog 'POOFLY','strat_incremental' 

    EXEC sp_fulltext_catalog 'POOFLY','start_full'

     

    9、验证全文目录填充的进度

    select  fulltextcatalogproperty('POOFLY','populateStatus') 

    --为表示已经完成填充

     

    10、通过CONTAINS谓词进行全文索引

    select HELLO

    from HELLO

    where CONTAINS(*,'TEST')

    /*

    HELLO

    ---------------

    TEST*/

     

    11、删除全文索引元数据

    EXEC sp_fulltext_table 'HELLO','drop'

     

    12、删除全文目录

    EXEC sp_fulltext_catalog 'POOFLY','DROP'

     

    --------------华丽分割线-----------------------

    --以下是的建立全文索引的方法

    /*创建全文目录*/

    create FULLTEXT CATALOG POOFLY AS DEFAULT

    /*C创建全文索引*/

    create FULLTEXT INDEX ON HELLO(HELLO) key index PK__HELLO__3214EC271DE57479 ON  POOFLY

    /*通过CONTAINS谓词进行全文索引*/

    select HELLO

    from HELLO

    where CONTAINS(*,'TEST')

    /*删除全文索引*/

    DROP FULLTEXT INDEX on HELLO

    /*删除全文目录FT(含有全文索引时候不能删除)*/

    drop fulltext catalog POOFLY

     

     

     

    -----使用contains关键字进行全文索引----------------

    --1.前缀搜索

    select name from tb where contains(name,'"china*"')

    ps:注意这里的* 返回结果可能会是 chinax chinay chinaname china 

    /*返回前缀是china的name--如果不用“”隔开那么系统会都城contains(name,'china*') 与china* 匹配*/

     

    --2.使用派生词搜索

    Select name from tb where contains(name,'formsof(inflectional,"foot")')

    /* 出来结果可能是foot feet (所有动词不同形态名词单复数形式)*/

     

    --3.词加权搜索

    select value from tb where contains(value , 'ISABOUT(performance weight(.8))')

    /*全值用-1的一个数字表示表示每个词的重要程度*/

     

    --4.临近词搜素

    select * from tb where contains(document,'a near b')

    /* 出来的结果是“a”单词与“b”单词临近的document可以写成contains(document,'a ~ b')*/--

     

    --5.布尔逻辑搜素

    select * from tb where contains(name,'"a" and "b"')

    /*返回既包含A 又包含B单词的行当然这里的AND 关键字还有换成OR ,AND NOT 等*/

    ----------------------------------------------------

     

    你还可以使用RREETEXT 进行模糊搜索

    --任意输入文本全文索引自动识别重要单词然后构造一个查询

    select * from tb where freetext(wendang,'zhubajie chi xi gua !')

    --============================================================

    --对全文索引性能影响因素很多包括硬件资源方面还有SQL 自身性能和MSFTESQL服务的效率等方面

    --它的搜索性能有方面: 全文索引性能和全文查询性能

     

    ------------------------------------------------------------------------------------------------

    普通 SQL 索引 全文索引
    存储时受定义它们所在的数据库的控制。 存储在文件系统中,但通过数据库管理。
    每个表允许有若干个普通索引。 每个表只允许有一个全文索引。
    当对作为其基础的数据进行插入、更新或删除时,它们自动更新。 将数据添加到全文索引称为填充,全文索引可通过调度或特定请求来请求,也可以在添加新数据时自动发生。
    不分组。 在同一个数据库内分组为一个或多个全文目录。
    使用 SQL Server 企业管理器、向导或 Transact-SQL 语句创建和除去。 使用 SQL Server 企业管理器、向导或存储过程创建、管理
  • 相关阅读:
    14.4.9 Configuring Spin Lock Polling 配置Spin lock 轮询:
    14.4.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB Master Thread I/O Rate
    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量
    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量
    14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
    14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
    14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering
    14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering
    14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器
    14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器
  • 原文地址:https://www.cnblogs.com/javaleon/p/4019471.html
Copyright © 2011-2022 走看看