您的位置:首页 > 数据库

全文檢索索引支援 架構

2007-05-18 10:00 141 查看
 

全文檢索索引支援

下圖所示為組成全文檢索索引支援的元件。這些元件與定義、建立、和填入全文檢索索引有關。

若要對資料庫和資料表進行全文檢索索引、定義、和填入索引,必須使用下列元件來指定:

SQL Server Enterprise Manager。
使用 SQL Server Enterprise Manager 中資料庫樹狀結構的其中一個節點,來管理資料庫中的全文檢索目錄。

使用「SQL 分散式管理物件」(SQL-DMO) 的應用程式。
SQL-DMO 擁有管理全文檢索目錄和索引的物件。

使用 Transact-SQL 和標準資料庫 API 的應用程式。
Transact-SQL 有一組系統預存程序,可用來管理全文檢索目錄和索引。

其他元件以下列方式定義與擴展全文檢索索引:

啟用 Microsoft® SQL Server™ 2000 資料庫來進行全文檢索索引。

指定資料庫的全文檢索目錄。

啟用個別資料表的全文檢索索引,並使資料表與目錄產生關聯。

將各資料表中的個別資料行,加入資料表的全文檢索索引中。從步驟 1 到 4 的所有中繼資料資訊,全儲存在 SQL Server 資料庫的系統資料表中。

對每個資料表的全文檢索索引是以逐一啟動的方式進行。當啟動全文檢索資料表索引後,開始初始值便會從 SQL Server 的執行個體,傳給 Microsfot Search Service中的索引服務。開始初始值會識別與全文檢索索引相關的資料表。

擴展是以逐資料庫目錄或逐資料表的方式要求。 以逐資料庫目錄的方式進行擴展可讓您以一個作業擴展多個索引;以逐資料表的方式則可擴展特定索引。

步驟 6 中的擴展可以使用不同的形式:

完全擴展
如果對全文檢索目錄要求完全擴展,會為資料庫目錄涵蓋之所有資料表中的所有資料列建立索引項目。 如果對資料表要求完全擴展,則會為該資料表中的所有資料列建立索引項目。 完全擴展通常發生在初次擴展資料庫目錄或索引時,接著可以使用變更追蹤或遞增擴展來維護索引。

變更追蹤擴展
維護系統資料表中已修改之資料列的記錄,並將變更傳給全文檢索索引。 若要開始變更追蹤,應執行 sp_fulltext_table,並為 @action 參數指定 start_change_tracking。 使用變更追蹤時,也要指定何時將變更從歷程資料表擴展到全文檢索索引:
背景
start_change_tracking 開始變更追蹤後,可以執行 sp_fulltext_table,並為 @action 參數指定 start_background_updateindex。 利用這個選項,資料表中的資料列變更就會在發生的同時傳到全文檢索索引。

視需要
使用這個選項時,所有追蹤的變更都會儲存在歷程中,只有在執行 sp_fulltext_table,並為 @action 參數指定時 update_index 才會傳到全文檢索索引。

已排程
您可以使用「SQL 代理程式」排定定期的作業,來執行 sp_fulltext_table,並為 @action 參數指定 update_index。 這樣就會將所有未完成的追蹤變更傳到全文檢索索引。

遞增擴展
僅調整自上一次擴展後所新增、刪除、或修改的索引項目。使用這項功能時,索引資料表中必須有 timestamp 資料型別的資料行。如果資料表中沒有 timestamp 資料行,那麼僅能執行完全或變更追蹤擴展。如果對沒有 timestamp 資料行的資料表進行遞增擴展,系統仍將執行完全擴展。
如果定義新的全文檢索索引的資料表,之前沒有與任何資料庫目錄關聯,則下一個對資料庫目錄層級的遞增擴展要求,將建立資料表的所有項目。
如果資料表中有任何中繼資料自上次擴展後發生變更,則遞增擴展要求的實作方式將與完全擴展相同。這包括任何資料行、索引、或全文檢索索引定義的改變。

每個擴展要求都會傳送給  Microsoft Search service 中的索引服務:

索引服務會傳送適當的開始初始值給「SQL Server 處理常式」。 開始初始值中包含如擴展中所用之資料表與索引等資訊,以及與對索引執行之最後一次完全或遞增擴展有關的 timestamp 值 (如果資料表有 timestamp 資料行的話)。

「SQL Server 處理常式」是一個含有邏輯的驅動程式,可從與全文檢索索引相關的 SQL Server 資料行中,取得文字資料。此處理常式從 SQL Server 擷取資料後,會將資料傳回給索引服務。 對於完全擴展,「SQL Server 處理常式」會萃取資料表中的所有資料列。 對於遞增擴展,「SQL Server 處理常式」只會萃取目前的 timestamp 值高於與最後一次擴展相關之 timestamp (這儲存在開始初始值中) 的資料列中的資訊。

然後,索引服務會將索引識別項及欲編列為索引的字串傳給索引引擎,索引引擎會消除雜訊文字如 a、and、或 the。同時,它也決定字組界限 (Word Boundary),並建立全文檢索索引,此索引涵蓋自索引服務傳遞過來的文字。 這個語言學分析會因文字所用的語言而異。 SQL Server 2000 支援數種語言的語言學分析;語言的指定是使用 sp_fulltext_column。全文檢索索引將儲存在全文檢索目錄檔中。

在擴展結束時,索引服務會計算一個新的開始初始值,記錄後續遞增擴展應該開始的時間。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息