首页/应用软件/内容

对于SQL Server 的全文搜索技巧详细说明

应用软件2022-10-07 阅读()
update } population;

更新全文索引有三种方式:

?FULL POPULATION:全部填充,从基础表中获取每一行,重新编入全文索引;
?INCREMENTAL POPULATION:增量填充,前提是基础表中包含timestamp字段,从上一次填充之后,只把更新之后的数据编入全文索引;
?UPDATE POPULATION:更新填充,从上一次填充之后执行更新(insert、update、或delete)操作的数据行重新编入索引;

在创建全文索引时,如果指定CHANGE_TRACKING=AUTO 或 CHANGE_TRACKING= OFF , 那么新建的全文索引会立即开始填充进程。

四,使用 contains 谓词查询全文索引

如果想要在查询中使用全文索引,通常使用CONTAINS谓词来调用全文索引,实现比LIKE关键字更复杂的文本匹配查询,而LIKE关键字是模糊匹配,不会调用全文索引。

例如,利用contains谓词执行单个分词的完全匹配查询:

select [tsql] 
from [dbo].[DatabaseLog] 
where contains([tsql], 'searchword', language 1033);

全文查询跟Like相比,速度更快,支持的搜索功能更复杂,使用contains谓词,不仅能够执行分词的完全匹配或分词的前缀匹配查询,还能够执行基于词根的查询,基于自定义同义词的查询,基于距离和顺序的相邻分词查询。但是,和Like 相比,contains谓词不能进行后缀匹配查询。

contains谓词返回的结果是布尔值,如果全文索引列中包含指定的关键字或查找模式(pattern),返回TRUE;否则,返回FALSE。

contains谓词支持word查询和短语查询,word是指单个分词,短语(phrase)是由多个word和间隔的空格组成的,对于短语,必须使用双引号,将多个word组成一个短语。

1,逻辑组合查询

使用and ,and not, 或 or 逻辑运算符 匹配多个word 或 多个phrase

CONTAINS(Name, '"Mountain" OR "Road" ')
CONTAINS(Name, ' Mountain OR Road ')

2,前缀查询

使用contains谓词进行前缀匹配,和like 'prefix%'功能相同,只不过contains谓词使用“*”作为通配符,“*”匹配0,1或多个字符,前缀匹配的写法是:'"prefix*"',全文索引只能执行前缀匹配。

CONTAINS(Name, ' "Chain*" ')
CONTAINS(Name, '"chain*" OR "full*"')

3,查询同义词(thesaurus)或词干(stemmer)

Stemmer(词干),例如,根据语法规程,英语的动词 根据数(单数,复数),人称,时态的不同而存在不同的变化形式,这些单词都是同源的。

CONTAINS(Description, ' FORMSOF (INFLECTIONAL, ride) ')

THESAURUS (同义词),需要导入XML进行配置,SQL Server 提供一个默认的Thesaurus file,是Empty的。如果在Thesaurus file 配置“Author”,“Writer”,“journalist” 是同义词,在使用fulltext index查询时,只要满足任意一个同义词,都匹配成功。

CONTAINS(Description, ' FORMSOF (THESAURUS, author) ')

4,距离查询

使用 near 函数,查询匹配相邻分词的数据行,near函数的定义如下,用于需要在查询模式中指定距离查询的查询模式:

NEAR ( ( { <simple_term> (北联网教程,专业提供视频软件下载)

第1页  第2页  第3页  第4页  第5页  第6页 

……

相关阅读