事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊
適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
建立和維護全文索引包括使用稱為「填入」(Population) 的處理程序 (也稱為「抓取」(Crawl)) 來填入索引。
全文檢索索引支援下列填入類型:
在完整填充期間,系統會為資料表或索引視圖的所有資料列建立索引項目。 全文索引的完整填充會為基礎資料表或已索引檢視表的所有資料列建立索引項目。
根據預設,SQL Server 會在建立新的全文索引時立即將其完整填充。
若要建立全文檢索索引,但不立即填入,請在 CHANGE_TRACKING OFF, NO POPULATION
陳述式中指定 CREATE FULLTEXT INDEX
子句。 如果您指定 CHANGE_TRACKING MANUAL
,則全文檢索引擎在您使用 START FULL POPULATION
或 START INCREMENTAL POPULATION
子句來執行 ALTER FULLTEXT INDEX
陳述式之前,並不會填入新的全文檢索索引。
下列範例會針對 Production.Document
範例資料庫的 AdventureWorks
資料表建立全文檢索索引。 這個範例會使用 WITH CHANGE_TRACKING OFF, NO POPULATION
來延遲初始完整母體擴展。
CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
CREATE FULLTEXT CATALOG AW_Production_FTCat;
CREATE FULLTEXT INDEX ON Production.Document
(
Document --Full-text index column name
TYPE COLUMN FileExtension --Name of column that contains file type information
Language 1033 --1033 is LCID for the English language
)
KEY INDEX ui_ukDoc
ON AW_Production_FTCat
WITH CHANGE_TRACKING OFF, NO POPULATION;
GO
下列範例會針對 Production.Document
範例資料庫的 AdventureWorks
資料表執行完整母體擴展。
ALTER FULLTEXT INDEX ON Production.Document
START FULL POPULATION;
在初始完整填入完成後,您可以選擇性地使用變更追蹤來維護全文檢索索引。 由於 SQL Server 維護一個資料表來追蹤自上次更新以來對基底資料表所做的變更,因此存在與變更追蹤相關聯的少量負擔。 使用變更追蹤時,SQL Server 會在基底資料表或索引檢視表中維護已由更新、刪除或插入作業所修改的資料列記錄。 透過 WRITETEXT 和 UPDATETEXT 進行的資料變更不會反映在全文檢索索引中,且變更追蹤也不會偵測到這些變更。
注意
如果資料表包含 timestamp 欄,您可以使用增量填充而非變更追蹤。
在建立索引期間啟用變更追蹤時,SQL Server 會在建立新的全文檢索索引後立即填充。 之後,系統會追蹤並傳播變更至全文檢索索引。
有兩種類型的變更追蹤:
CHANGE_TRACKING AUTO
選項)。 自動變更追蹤是預設的行為。CHANGE_TRACKING MANUAL
選項)。變更追蹤的類型會決定全文索引的填充方式,如下所示:
自動填充
根據預設,或者如果您指定 CHANGE_TRACKING AUTO
,全文檢索引擎就會針對全文索引使用自動填充。 初始完整資料填入完成後,當基底資料表中的資料被修改時,系統就會追蹤變更,所追蹤的變更會自動傳播。 不過,全文檢索索引會在背景更新,所以傳播的變更可能不會立即反映在索引中。
啟動變更追蹤並自動填入
CREATE FULLTEXT INDEX ...WITH CHANGE_TRACKING AUTO
ALTER FULLTEXT INDEX ...設定變更追蹤 自動
範例 - 將全文檢索索引更改成使用自動變更追蹤
下列範例會將範例資料庫 AdventureWorks
資料表的全文索引更改為使用變更追蹤並自動填充。
USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate SET CHANGE_TRACKING AUTO;
GO
手動填充
如果您指定了 CHANGE_TRACKING MANUAL,全文引擎將會針對全文索引使用手動填充。 初始完整填入人口完成之後,當基礎資料表中的資料被修改時,系統會追蹤變更。 然而,它們不會被傳播至全文索引,直到您執行 ALTER FULLTEXT INDEX ... START UPDATE POPULATION 陳述式。 您可以使用 SQL Server Agent 來定期呼叫這個 Transact-SQL 陳述式。
若要使用手動填入來開始追蹤變更
CREATE FULLTEXT INDEX ...使用 "手動變更追蹤"
ALTER FULLTEXT INDEX ...設定變更追蹤為手動
範例 - 使用手動變更追蹤來建立全文檢索索引
下列範例會針對 HumanResources.JobCandidate
範例資料庫的 AdventureWorks
資料表建立使用變更追蹤搭配手動母體擴展的全文檢索索引。
USE AdventureWorks;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume)
KEY INDEX ui_ukJobCand
WITH CHANGE_TRACKING=MANUAL;
GO
範例 - 執行手動填充
下列範例會針對 AdventureWorks
樣本資料庫的 HumanResources.JobCandidate
資料表的變更追蹤全文檢索索引執行手動填入。
USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION;
GO
建立全文索引 ...變更追蹤關閉
ALTER FULLTEXT INDEX ...SET CHANGE_TRACKING OFF
遞增式填充是一種手動填充全文索引的替代機制。 如果資料表遇到大量插入作業,使用累加母體擴展可能會比使用手動母體擴展更有效率。
您可以針對將 CHANGE_TRACKING 設定為 MANUAL 或 OFF 的全文索引執行增量填充。
累加母體擴展的要求是,索引資料表必須包含 timestamp 資料類型資料行。 如果沒有 timestamp 資料行,就無法執行增量更新。
SQL Server 會使用 timestamp 資料行來識別自上次填充起已變更的資料列。 然後,累加母體擴展會針對在上一次母體擴展之後或進行時加入、刪除或修改的資料列,更新全文檢索索引。 在集合結束時,全文檢索引擎會記錄新的 timestamp 值。 這個值就是「SQL 收集程式」所找到的最大 timestamp 值。 此值會在下次增量資料填充啟動時使用。
在某些情況下,增量統計要求會導致完整統計。
若要執行累加母體擴展,請使用 ALTER FULLTEXT INDEX
子句來執行 START INCREMENTAL POPULATION
陳述式。
在 Management Studio 中,於 [物件總管] 中展開伺服器。
展開 資料庫,然後展開包含全文檢索索引的資料庫。
展開 資料表。
以滑鼠右鍵按一下已定義全文檢索索引的資料表、選取 [全文檢索索引],然後按一下 [全文檢索索引] 內容功能表上的 [屬性]。 這樣就會開啟 [全文檢索索引屬性] 對話方塊。
重要
如果基底資料表或檢視表未包含 timestamp 資料類型的資料行,則無法執行累加母體擴展。
在 [選取頁面] 窗格中,選取 [排程]。
您可以使用這個頁面來建立或管理 SQL Server Agent 作業的排程,以便針對全文檢索索引的基底資料表或索引檢視表啟動累加資料表母體擴展。
選項如下:
若要建立新的排程,請按一下 [新增]。
這樣就會開啟 [新增全文檢索索引資料表排程] 對話方塊,可讓您建立排程。 若要儲存排程,請按一下 [確定]。
重要
在您結束 [全文檢索索引屬性] 對話方塊之後,SQL Server Agent 作業 (針對 資料庫名稱.資料表名稱 啟動累加資料表填充) 便會與新的排程相關聯。 如果您針對相同的全文檢索索引建立多個排程,它們都會使用相同的作業。
若要變更現有排程,請選取現有排程,然後按一下 [編輯]。
這樣就會開啟 [新增全文檢索索引資料表排程] 對話方塊,可讓您修改排程。
注意
如需修改 SQL Server Agent 作業的資訊,請參閱修改作業。
若要移除現有排程,請選取現有排程,然後按一下 [刪除]。
選取 [確定]。
搜耙發生錯誤時,「全文檢索搜尋」搜耙記錄功能會建立並維護搜耙記錄檔,此記錄檔是一個純文字檔。 每個爬網記錄檔都對應至特定的全文檔案目錄。 所指定執行個體 (在此範例中為預設執行個體) 的編目記錄檔預設位於 %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG
資料夾中。
網頁爬蟲記錄檔會依循以下命名規則:
SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]
以下是爬網記錄檔名稱的變動部分。
例如,SQLFT0000500008.2
是指資料庫識別碼 = 5 而且全文檢索目錄識別碼 = 8 之資料庫的編目記錄檔。 檔案名稱結尾的數字 2 表示此資料庫/目錄對有兩個抓取記錄檔。
sys.dm_fts_index_population (Transact-SQL)
全文檢索快速入門
建立及管理全文檢索索引
CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)
事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊訓練
學習路徑
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
文件
建立及管理全文檢索目錄
選擇建立全文檢索索引時的語言
本文描述如何建立、填入和管理 SQL Server 中的全文檢索索引。