SQL Server 全文搜索功能、全文索引方式介绍

2019-03-13 15:13 月下刀客 未知
  SQL Server 的全文搜索(Full-Text Search)是基于分词的文本检索功能,依赖于全文索引。全文索引不同于传统的平衡树(B-Tree)索引和列存储索引,它是由数据表构成的,称作倒转索引(Invert Index),存储分词和行的唯一键的映射关系。倒转索引是在创建全文索引或更新全文索引时,由SQL Server自动创建和维护的。

  全文索引主要包含三种分析器:分词器(word Breaker)、词干分析器(stemmer)和同义词分析器。全文索引中存储的数据是分词及其位置等信息,分词是基于特定语言的语法规则,按照特定的符号寻找词语的边界,把文本分解为“单词”,每一个单词叫做一个分词(term);全文索引有时会提取分词的词干,把词干的多种派生形式存储为单一词干,这个过程叫做提取词干;根据用户提供的自定义同义词列表,把相关的单词转换为同义词,这个过程叫做提取同义词。

  生成全文索引是把用户表中的文本数据进行分词(Word breaker)和提取词干(Stemmer),并转换同义词(Thesaurus),过滤掉分词中的停用词(Stopword),最后把处理之后的数据存储到全文索引中。把数据存储到全文数据的过程叫做填充(Populate)或爬虫(Crawl)进程,全文索引的更新方式可以手动填充,自动填充,或增量填充。

一、创建全文目录和唯一索引

  创建全文索引之前,必须创建全文目录(Full-Text Catalog),全文目录用于组织全文索引,是全文索引的容器。每一个全文索引必须属于一个全文目录。全文目录是个逻辑结构,跟数据库的架构(Schema)相同,根据全文索引的存储位置无关。?

  1. create fulltext catalog catalog_test
  2. as default;

  为了创建全文索引,基础表上必须存在一个唯一的(unique)、单列的(single-column)、非空的(non-nullable)的索引,全文引擎使用该索引把基础表上的每行数据映射唯一索引键上,倒转索引存储的就是该索引键和分词之间的映射关系。?

  1. create unique index uidx_dbLogID
  2. on [dbo].[DatabaseLog]
  3. ([DatabaseLogID]);

二、创建全文索引

  每个表只能创建一个全文索引,创建全文索引时,必须考虑全文索引存储的文件组,全文索引关联的停用词列表,全文索引的更新方式,以及跟文本关联的语言,全文索引列必须是文本字段,例如:?

  1. create fulltext index
  2. on [dbo].[DatabaseLog]
  3. (
  4. [tsql] language 1033
  5. )
  6. key index
收藏 举报

延伸 · 阅读