sql server中实现全文检索
-- 是否安装全文检索
SELECT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled') AS [是否安装全文检索];
-- 创建全文目录(存储全文索引的物理容器)
CREATE FULLTEXT CATALOG ftCatalog_News
WITH ACCENT_SENSITIVITY = OFF -- 不区分重音(如 café = cafe)
AS DEFAULT; -- 设为默认目录,后续索引不指定目录时自动使用
-- 在 Title 和 Content 列上创建全文索引
CREATE FULLTEXT INDEX ON NewsArticles(
Title LANGUAGE 2052, -- 2052 = 简体中文 LCID
Content LANGUAGE 2052
)
KEY INDEX PK_NewsArticles_ArticleID -- 必须指向表的唯一索引(主键)
WITH CHANGE_TRACKING AUTO, -- 自动跟踪数据变更
STOPLIST = SYSTEM;
--示例--
SELECT ArticleID, Title FROM NewsArticles
WHERE CONTAINS(Content, '全文检索');
-- 多词 AND 关系
SELECT * FROM NewsArticles
WHERE CONTAINS(Content, 'SQL AND Server');
-- 多词 OR 关系
SELECT * FROM NewsArticles
WHERE CONTAINS(Content, '优化 OR 性能');
-- 不包含 ,多词 AND 关系 SELECT * FROM NewsArticles WHERE Not CONTAINS(Content, 'SQL AND Server'); -- 不包含 ,多词 OR 关系 SELECT * FROM NewsArticles WHERENotCONTAINS(Content, '优化 OR 性能');
-- 前缀匹配(* 通配符,必须加双引号)
SELECT * FROM NewsArticles
WHERE CONTAINS(Content, '"数据*"');
-- 短语精确匹配(加双引号)
SELECT * FROM NewsArticles
WHERE CONTAINS(Content, '"数据库性能"');
-- 邻近词查询(NEAR)
SELECT * FROM NewsArticles
WHERE CONTAINS(Content, 'NEAR((全文, 检索), 3)'); -- 两词距离不超过3个词
-- 权重加权(ISABOUT)
SELECT * FROM NewsArticles
WHERE CONTAINS(Content, 'ISABOUT (SQL weight(0.8), 数据库 weight(0.2))');

浙公网安备 33010602011771号