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 
WHERE Not  CONTAINS(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))');
posted @ 2026-04-26 19:45  Biyuanguang  阅读(13)  评论(0)    收藏  举报