1.全文索引可以对表中一列或多列进行索引,每一列可以指定使用语言 2.一张表只能创建一个全文索引,每个全文索引只能归属于一个全文目录 3.全文索引可以使用类型:char/varchar/nchar/nvarchar/text/ntext/image/xml/varbinary(max)/filestream 4.全文索引根据特定语言的规则对词和短语进行操作,从而对全文索引中文本数据执行语言搜索 5.全文索引可以对词和短语,词和短语的各种形式(如果现在进行式/过去式/复数)等操作 6.全文索引可以搜索以下选项: --简单词,一个活多个特定的词或短语 --前缀词,以指定文本开头的词或短语 --派生词,特定词的变形 --邻近词,与一个词或短语相邻的词或短语 --同义词,特定词的同义词 --加权词,使用加权值得词或短语 7.全文索引不区分大小写 8.LILE谓词只能对字符有效,不能查询二进制数据 9.全文索引依赖于SQL FULL TEXT FILTER DAEMON Launcher服务。 10.筛选器可以从文档中提起文本块,删除嵌入的格式数据,以文本信息流的方式操作数据 11.不同格式类型的筛选器用来加载不同格式的文档(pdf/doc/xls等) 12。全文索引中语言特有组件: --段字符和词干分析器 --非索引词 --同义词文件 --帅选器 13.DBA可以根据需要为数据库安装不同类型的筛选器,更新非索引词库和同义词库 14.建立全文索引的步骤 --1.创建全文目录 --2.标示需要创建全文索引的列 --3.如果全文索引列是binary(max)/image等数据类型时,必须制定数据列的类型 --4.选择每列使用的语言 --5.选择修改跟踪机制 15.对于需要建立全文索引的表或则视图,必须制定唯一且不可为NULL的列为索引键 16.全文目录是一组全文索引集合的逻辑概念,是虚拟对象,全文索引目录不属于任何文件组。 17.全文索引将数据添加到全文索引中的过程称为填充(population) 18.填充操作是IO密集型操作,为提高性能和IO的并行度,可以将索引表和全文索引分开存放到位于不同磁盘上的两个文件组中。 19.如果单表填充操作行数较大时,为该表单独创建全文目录,从而避免启动填充时执行IO过大和执行时间过长。 20.创建非索引词表: CREATE FULLTEXT STOPLIST myStopList FROM SYSYTEM STOPLIST GO ALTER FULLTEXT STOPLIST myStopList ADD 'en' language 'french' GO 21.增量更新全文索引 ALTER FULLTEXT INDEXT 'tableName' START INCREMENT POPULATION 22.全文索引更新操作时异步过程,在更新前线检查更新状态 SELECT FULLTEXTCATEGORYPROPERT('fullTextCategoryName'.'POPULATESTATUS') 如果为1时标明正在更新 23.全文索引填充有三种方式:完全填充,基于更改跟踪的自动或手动填充,基于时间戳的增量式填充 --基于更改跟踪的自动填充,默认选项,当修改基表数据时,跟踪更改并在后台更新索引,索引更改可能不会实时得到体现 --基于更改跟踪的手动填充,当数据更改时,记录更改,直到用户执行ALTER FULLTEXT INDEX START UODATE POPULATION是才会完成更新 --基于时间戳的增量式填充,使用timesamp来表示子上次填充后更新的数据,并将这些数据进行填充,要求在数据列上有timestamp标识列 24.修改基于更改跟踪的方式: CREATE/ALTER FULLTEXT INDEX 'tableName' WITH CHANGE_TRACKING AUTO/MANUAL/OFF 25.使用CONTAINS(CONTRAINSTABLE)可搜索单个词或短语的精确或模糊匹配,在一定范围内得相近词或加权匹配项 26.使用FREETEXT(FREETEXTTABLE)可搜索与指定词、短语、句子含义相符合但措辞不完全相同的匹配项,只要在指定列的全文索引中找到任何搜索词及其相关形式,就可以生成匹配项 27.CONTAINSTABLE和FREETEXTTABLE函数会返回与全文索查询匹配的0到N行的表(KEY,RANK),但FREETEXTTABLE 会返回RANK为0的行,而CONTAINSTABLE不会。 28.相关查询示例:http://msdn.microsoft.com/zh-cn/library/ms142583.aspx