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

