SqlServer創(chuàng)建全文索引的詳細步驟
? 一、SQL Server 全文索引創(chuàng)建步驟(完整可執(zhí)行)
1.1 前置檢查(必須通過)
全文索引不是默認功能,很多開發(fā)環(huán)境根本沒裝。 請先在 SSMS 執(zhí)行以下命令驗證:
-- 檢查1:全文搜索組件是否已安裝
SELECT SERVERPROPERTY('IsFullTextInstalled') AS IsFullTextInstalled;- 返回值 = 1:繼續(xù)下一步
- 返回值 = 0:必須找DBA安裝全文組件(SQL Server安裝介質(zhì)修復,添加“全文和語義提取搜索”功能)
1.2 為當前數(shù)據(jù)庫啟用全文索引
EXEC sp_fulltext_database 'enable';
注意:該命令并非所有SQL Server版本必須,但執(zhí)行無害。若報錯“已啟用”,忽略即可
1.3 創(chuàng)建全文目錄(容器)
CREATE FULLTEXT CATALOG FT_Catalog_LogRequest WITH ACCENT_SENSITIVITY = OFF;
ACCENT_SENSITIVITY = OFF:匹配時忽略重音(對中文無影響,推薦)- 如果只需要一個默認目錄,可執(zhí)行
CREATE FULLTEXT CATALOG FT_Catalog_LogRequest AS DEFAULT;
1.4 在目標表上創(chuàng)建全文索引——這是你的核心需求
CREATE FULLTEXT INDEX ON dbo.LogRequests
(
ParamJson -- 你要高速檢索的大字段
LANGUAGE 2052, -- 2052 = 簡體中文。必須指定!否則中文分詞失效
ApiMethod, -- (可選)其他需要全文檢索的字段
SysCode -- (可選)
)
KEY INDEX PK_LogRequests -- 表的主鍵名,必須單列、唯一、非空
ON FT_Catalog_LogRequest -- 全文目錄名,使用上一步創(chuàng)建的
WITH
(
CHANGE_TRACKING AUTO, -- 自動跟蹤數(shù)據(jù)變更(推薦)
-- 或:CHANGE_TRACKING MANUAL, 手動更新;STOPLIST = SYSTEM -- 使用系統(tǒng)停用詞表
);關于 LANGUAGE 2052 的嚴重性:
如果不指定 LANGUAGE 2052,SQL Server 會使用默認語言(通常是英語)。英文分詞器按空格分詞,會把“托盤條碼”整個當成一個詞,根本無法匹配你輸入的關鍵詞,導致全文索引建了也白建
1.5 首次填充索引(立即生效)
ALTER FULLTEXT INDEX ON dbo.LogRequests START FULL POPULATION;
- 數(shù)據(jù)量大時此操作消耗I/O,建議在業(yè)務低峰期執(zhí)行。
- 執(zhí)行期間,已有數(shù)據(jù)的檢索功能不可用,但表本身的增刪改查不受影響。
? 二、創(chuàng)建完成后的驗證與查詢
2.1 驗證索引是否創(chuàng)建成功
-- 查看該表上的全文索引
SELECT * FROM sys.fulltext_indexes
WHERE object_id = OBJECT_ID('dbo.LogRequests');
-- 查看全文目錄下的所有索引
SELECT * FROM sys.fulltext_catalogs;2.2 正確使用全文檢索(嚴禁再用LIKE)
錯誤用法(全表掃描):
SELECT * FROM LogRequests WHERE ParamJson LIKE '%托盤條碼123%';
正確用法(秒級響應):
-- 精確匹配關鍵詞 SELECT Id, ApiMethod, RequestTime FROM LogRequests WHERE CONTAINS(ParamJson, '托盤條碼123'); -- 多個關鍵詞(AND關系) SELECT Id, ApiMethod, RequestTime FROM LogRequests WHERE CONTAINS(ParamJson, '托盤 AND 條碼'); -- 短語匹配(完全包含) SELECT Id, ApiMethod, RequestTime FROM LogRequests WHERE CONTAINS(ParamJson, '"托盤條碼123"'); -- 同時檢索多個字段 SELECT Id, ApiMethod, RequestTime FROM LogRequests WHERE CONTAINS((ParamJson, ApiMethod), '托盤');
到此這篇關于SqlServer創(chuàng)建全文索引的詳細步驟的文章就介紹到這了,更多相關SqlServer創(chuàng)建全文索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SQL窗口函數(shù)之聚合窗口函數(shù)的使用(count,max,min,sum)
許多常見的聚合函數(shù)也可以作為窗口函數(shù)使用,包括AVG()、SUM()、COUNT()、MAX()以及MIN()等函數(shù),本文就詳細的介紹了SQL窗口函數(shù)之聚合窗口函數(shù)的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
case?when?then?else?end語句的用法(附demo)
本文主要介紹了case?when?then?else?end語句的用法,主要介紹了兩種格式,簡單case函數(shù)和case搜索函數(shù),具有一定的參考價值,感興趣的可以了解一下2023-10-10
參考sql2012存儲過程寫的統(tǒng)計所有用戶表尺寸大小的示例
參考SQL2005, 2008和2012的系統(tǒng)存儲過程master.sys.sp_spaceused代碼后,寫了下面一條語句來方便平時統(tǒng)計所有用戶表尺寸大小2014-01-01
SQLyog連接MySQL8.0報2058錯誤的完美解決方法
這篇文章主要介紹了SQLyog連接MySQL8.0報2058錯誤的完美解決方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
SQL?Server中操作XML數(shù)據(jù)的示例詳解
在關系數(shù)據(jù)庫的世界中,SQL?Server?一直以其強大的功能脫穎而出,在本文中,我將探討如何在?SQL?Server?中存儲、查詢和操作?XML?數(shù)據(jù),需要的可以參考下2024-12-12
Spark SQL 2.4.8 操作 Dataframe的兩種方式
這篇文章主要介紹了Spark SQL 2.4.8 操作 Dataframe的兩種方式,方式一是通過dsl操作,方式二是利用sql方式操作,每種方式通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-10-10

