SQL Server 2008 全文檢索搜尋的突破性變更
本主題描述全文檢索搜尋的突破性變更。這些變更可能會中斷以舊版 SQL Server 為根據的應用程式、指令碼或功能。當您升級時可能會遇到這些問題。如需詳細資訊,請參閱<使用 Upgrade Advisor 來準備升級>。
突破性變更
下列突破性變更適用於 SQL Server 2008 中的全文檢索搜尋。
功能 |
狀況 |
SQL Server 2005 |
SQL Server 2008 |
---|---|---|---|
CONTAINSTABLE 搭配使用者定義型別 (UDT) |
全文檢索索引鍵是 SQL Server 使用者定義型別,例如 MyType = char(1)。 |
傳回的索引鍵具有指派給使用者定義型別的型別。 在此範例中,這就是 char(1)。 |
傳回的索引鍵具有使用者定義型別。在此範例中,這就是 MyType。 |
CONTAINSTABLE 和 FREETEXTTABLETransact-SQL 陳述式的 top_n_by_rank 參數 |
使用 0 當做參數的 top_n_by_rank 查詢。 |
發生失敗並傳回錯誤訊息,該訊息指出您必須使用大於零的值。 |
成功,傳回零個資料列。 |
CONTAINSTABLE 和 ItemCount |
在基底資料表發送變更到 MSSearch 之前,從基底資料表中刪除資料列。 |
CONTAINSTABLE 會傳回準刪除記錄。ItemCount 並不會變更。 |
CONTAINSTABLE 不會傳回任何準刪除記錄。 |
FREETEXT 或 FREETEXTTABLE |
搜尋精確的片語。 |
如果將搜尋字串 (freetext_string) 括在雙引號內,就不會執行詞幹分析和同義字比對,而且字串只會傳回完全相符項目,就像是片語搜尋一樣。例如,在 FREETEXT 述詞中指定 "fast ships" 只會傳回包含 "fast ships" 的資料列。將不會傳回 "ship your package fast" 片語。 |
FREETEXT 和 FREETEXTTABLE 不再允許片語搜尋,這兩者會執行詞幹分析和同義字比對,不論是單引號還是雙引號括住搜尋字串。例如,搜尋 "fast ships" 會傳回 "fast ships" 和 "ship your package fast" 這兩者。 若要搜尋片語,請使用 CONTAINS 或 CONTAINSTABLE。 |
ItemCount |
資料表包含 null 文件或類型資料行。 |
除了索引文件以外,null 的文件或是具有 null 類型的文件也會算入 ItemCount 值內。 |
只有索引文件才會算入 ItemCount 值內。 |
目錄 ItemCount |
具有 NULL 延伸模組的 Blob 資料行。 |
它會算入目錄的 ItemCount 中。 |
它不會算入目錄的 ItemCount 中。 |
UniqueKeyCount |
從目錄中查詢唯一索引鍵計數,例如兩個資料表 (table1 和 table2),每個資料表都有三個字:word1、word2 和 word3。 |
UniqueKeyCount = 9。下表摘要列出如何達到這個值: table1 = 3 table1 全文檢索索引的 EOF = 1 table2 = 3 table2 全文檢索索引的 EOF = 1 全文檢索目錄 = 1 |
對於每一個資料表而言,UniqueKeyCount 為相異關鍵字的數目 + 1 (0xFF)。這並不會將 > 1 份文件中的相同字視為新的唯一索引鍵。 如果是目錄,UniqueKeyCount 就是此目錄下每一個資料表之 UniqueKeyCount 的總和。不同資料表中的相同字會視為唯一索引鍵。在此案例中,唯一索引鍵計數為 8。 |
precompute rank 伺服器層級選項 |
FREETEXTTABLE 查詢的效能最佳化。 |
當這個選項設定為 1 時,使用 top_n_by_rank 指定的 FREETEXTTABLE 查詢會使用存放在全文檢索目錄中的預先計算的等級資料。 |
不支援。 |
sp_fulltext_pendingchanges (更新索引鍵資料行時) |
在 2 個資料列之資料表的其中一個資料列上更新全文檢索索引鍵資料行,並執行 sp_fulltext_pendingchanges。 |
兩個資料列都會出現。 |
只出現一個資料列。 |
內嵌函數 |
具有全文檢索運算子的內嵌函數 |
傳回錯誤訊息。 |
傳回相關的資料列。 |
使用 sp_fulltext_database 來啟用或停用全文檢索搜尋。 |
全文檢索查詢不會傳回任何結果。如果此資料庫停用全文檢索,則不允許全文檢索作業。 |
傳回結果給全文檢索查詢,並允許全文檢索作業 (即使此資料庫停用全文檢索)。 |
|
地區設定特性的忽略字 |
母語之地區設定特性變化中的查詢,例如比利時法文和加拿大法文。 |
地區設定特性變化中的查詢是由其母語的元件 (斷詞工具、字幹分析器和忽略字) 所處理。例如,法文 (法國) 元件可用於剖析法文 (比利時)。 |
您必須明確針對每一個地區設定識別碼 (LCID) 加入忽略字。例如,您需要為比利時、加拿大和法國指定 LCID。 |
同義字字幹處理 |
使用同義字和字形變化 (字幹)。 |
同義字會在擴充之後自動進行字幹處理。 |
如果您想要擴充的字幹形式,您需要明確加入字幹處理的形式。 |
全文檢索目錄路徑和檔案群組 |
處理全文檢索目錄。 |
每一個全文檢索目錄都有實體路徑,而且會屬於某個檔案群組。它會被視為資料庫檔案。 |
全文檢索目錄是虛擬物件,而且不屬於任何檔案群組。全文檢索目錄是參考一組全文檢索索引的邏輯概念。
附註
指定全文檢索目錄正常運作的 SQL Server 2005Transact-SQL DDL 陳述式。
|
使用此目錄檢視的路徑、data_space_id 和 file_id。 |
這些資料行會傳回特定的值。 |
這些資料行會傳回 NULL,因為此全文檢索目錄不再位於檔案系統中。 |
|
使用這個已被取代之系統資料表的路徑資料行。 |
傳回全文檢索目錄的檔案系統路徑。 |
傳回 NULL,因為此全文檢索目錄不再位於檔案系統中。 |
|
使用這些已被取代之預存程序的 PATH 資料行。 |
傳回全文檢索目錄的檔案系統路徑。 |
傳回 NULL,因為此全文檢索目錄不再位於檔案系統中。 |
|
使用此預存程序的 sp_help_fulltext_catalog_components。 |
傳回目前資料庫中所有全文檢索目錄所用的所有元件 (篩選、斷詞工具和通訊協定處理常式) 的清單。 |
傳回空的資料列。 |
|
使用 IsFullTextEnabled 屬性。 |
IsFullTextEnabled 設定指出給定的資料庫中是否啟用全文檢索搜尋。 |
此資料行的值沒有任何作用。使用者資料庫一定會啟用全文檢索搜尋。 |
變更記錄
更新的內容 |
---|
已將有關 FREETEXT 功能的資料列新增至資料表。 |