65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL SERVER - 2008 - 创建全文目录和全文搜索

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.43/5 (13投票s)

2008年9月10日

CPOL

2分钟阅读

viewsIcon

97937

关于该主题的第一篇文章——SQL SERVER - 2008 - 创建全文目录和全文搜索

引言

全文索引有助于对字符数据执行复杂的查询。这些查询可以包括单词或短语搜索。我们可以在数据库中的表或索引视图上创建全文索引。每个表或索引视图只允许一个全文索引。索引最多可以包含 1024 列。此功能适用于 SQL Server 2008 的 RTM(Ready to Manufacture)版本,不适用于 CTP(Community Technology Preview)版本。

要创建索引,请按照以下步骤操作

  1. 创建全文目录
  2. 创建全文索引
  3. 填充索引

1) 创建全文目录

全文目录也可以在创建全文索引的向导中创建。

2) 创建全文索引

3) 填充索引

在创建和填充索引后,您可以编写查询并在该表的记录搜索中使用它,从而提供更好的性能。

例如,我们将查找在其职位名称中包含“Marking”的员工记录。

FREETEXT( ) 是用于搜索包含基于字符的数据类型的列的谓词。它不会完全匹配单词,而是匹配搜索条件中单词的含义。当使用 FREETEXT 时,全文查询引擎会在内部对 freetext_string 执行以下操作,为每个术语分配权重,然后查找匹配项。

  • 根据词边界(断词)将字符串分解为单个单词
  • 生成单词的词形变化形式(词干提取)
  • 基于词库中的匹配项,识别术语的扩展或替换列表

CONTAINS( ) 类似于 Freetext ,但不同之处在于它接受一个关键字来与记录匹配,如果想在搜索中组合其他单词,则需要在搜索中提供“and”或“or”,否则会引发错误。

USE AdventureWorks2008
GO

SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE FREETEXT(*, 'Marketing Assistant');

SELECT BusinessEntityID,JobTitle
FROM HumanResources.Employee
WHERE CONTAINS(JobTitle, 'Marketing OR Assistant');

SELECT BusinessEntityID,JobTitle
FROM HumanResources.Employee
WHERE CONTAINS(JobTitle, 'Marketing AND Assistant');
GO

结论

全文索引是一个很好的功能,可以解决数据库问题,即在 SQL Server 数据库中搜索文本数据列中的特定单词和短语。可以使用 FREETEXT() CONTAINS() 以及“and”或“or”运算符来搜索单词、短语和单词或短语的多种形式。

参考

历史

  • 2008 年 9 月 10 日:初始发布
© . All rights reserved.