验证是否已安装 MSSQL Server 2008 的全文“组件”的简单方法是执行以下 T-SQL
SELECT SERVERPROPERTY('IsFullTextInstalled')
如果这返回值“1”,则安装该组件。
否则,您必须在现有 SQL Server 实例上安装 SQL Server 全文搜索。
- 在服务器上下载“具有高级服务的 SQL Server Express”的最新安装程序(例如,将其保存在“c:\installers”中)
具有高级服务的 MSSQL Server 2008 Express。
- 浏览到您保存它的位置并解压缩自解压 EXE(右键单击并单击“解压”)。
- 通过双击设置安装它。
- 选择“将现有实例升级到新版本或版本”并完成所有步骤。
- 我很确定我从来没有被问过我想要什么功能(即没有机会选择全文搜索)。再次运行安装程序时,也无法“向现有实例添加功能”,所以最终我发现需要以下额外步骤......
- 转到控制面板 > 添加或删除程序
- 找到 SQL Server 并打开它。(它问了我一个问题,类似于“在其他人使用它时卸载它会给他们带来一些痛苦”——这有点吓人,但我说是的,然后它问了一个通常的问题:我要卸载还是改变)
- 问题:卸载或更改(答案:更改)。
- 点击“添加功能”
- 浏览安装媒体。在这种情况下,我们可以找到我们解压缩“SQL Server Express with Advanced Services”安装程序的位置(注意它必须被解压,否则它不会喜欢它)
- 经历一堆废话。然后将询问您“安装新实例”或“向现有实例添加功能”(选择添加功能)。
- 在“功能”步骤中,您可以选中“全文搜索”框(万岁!!)
完成向导,现在一切正常,运行此 sql 以确认:
选择服务器属性('IsFullTextInstalled')
现在您可以使用 T-SQL启用全文搜索
-- We'll use Northwind sample database to enable
-- Full Text Search feature using T-SQL code only
USE Northwind
GO
-- We need to enable full text search for Northwind database
-- We will do that with sp_fulltext_database procedure
EXEC sp_fulltext_database 'enable'
-- Create catalog
EXEC sp_fulltext_catalog 'NorthwindCatalog','create'
-- Add some indexes to database
EXEC sp_fulltext_table 'Customers', 'create', 'NorthwindCatalog', 'pk_customers'
EXEC sp_fulltext_table 'Orders', 'create', 'NorthwindCatalog', 'pk_orders'
-- add columns for searching to full text search index
EXEC sp_fulltext_column 'Customers', 'CompanyName', 'add'
EXEC sp_fulltext_column 'Customers', 'ContactName', 'add'
EXEC sp_fulltext_column 'Customers', 'Address', 'add'
EXEC sp_fulltext_column 'Customers', 'City', 'add'
EXEC sp_fulltext_column 'Orders', 'ShipName', 'add'
EXEC sp_fulltext_column 'Orders', 'ShipAddress', 'add'
EXEC sp_fulltext_column 'Orders', 'ShipCity', 'add'
-- Activate full text search indexes
EXEC sp_fulltext_table 'Customers','activate'
EXEC sp_fulltext_table 'Orders','activate'
-- start full population of catalog
EXEC sp_fulltext_catalog 'NorthwindCatalog', 'start_full'
现在,您可以使用CONTAINS、FREETEXT、CONTAINSTABLE或FREETEXTTABLE关键字对索引列执行搜索。例如,假设我想检查名字是 Maria 或 Ana 的所有联系人:
USE Northwind
GO
SELECT CustomerId, ContactName, CompanyName, Address, City
FROM Customers c INNER JOIN
CONTAINSTABLE(Customers, (ContactName), '"Maria" OR "Ana"') AS KEY_TBL
ON c.CustomerId = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC
此 SQL 查询将返回如下图所示的结果: