全文檢索搜尋的國際化考量
建立全文檢索索引時選擇語言
在建立全文檢索索引並選擇資料行語言時,必須考慮一些事項。您必須考慮有關文字如何 Token 化,然後由 Microsoft SQL Server 全文檢索引 (MSFTESQL) 編製索引。文字分隔會在文字分界上將文字 Token 化。以英文而言,這些文字分界一般都是空格或標點符號。在其他語言 (例如:德文) 中,文字可能會結合在一起,因此您所選擇的資料行層級所代表的語言,應該是您想儲存在該資料行的資料列中的語言。如果不確定,最佳的做法就是使用中性文字分隔,此分隔只會將空格與標點符號 Token 化。選擇資料行層級語言的額外好處是「字根處理」。在全文檢索查詢中,「字根處理」的定義是指搜尋某特定語言的所有字根 (字形變化) 的過程。
選擇語言時的另一個考量為呈現資料的方式。對於儲存在 varbinary(max) 資料行以外的資料,不會執行特殊篩選。相反的,文字可以其原始格式傳送,而不會受限於文字分隔元件。文字分隔的目的主要為處理一般撰寫內容。所以,如果您的文字上有任何類型的標記 (如 HTML),則在編製索引和搜尋語言時可能會不夠精確。對於這種情況您有兩種選擇,一般偏好的方法是將文字資料儲存在 varbinary(max) 資料行中,然後指示其文件類型以進行篩選。如果不使用這個方法,則您可以考慮使用中性文字分隔;此外,若可行的話,請將標記資料 (例如 HTML 中的 'br') 加入您的贅字清單中。
附註: |
---|
當您指定中性語言時,以語言為基礎的字根檢索功能將不會發生作用。 |
語言支援
在 Microsoft SQL Server 2005 中,全文檢索查詢可以使用預設資料行以外的其他語言來搜尋全文檢索資料。只要該語言有支援且安裝了語言資源,則會使用 CONTAINS、CONTAINSTABLE、FREETEXT 以及 FREETEXTTABLE 查詢的 LANGUAGE language_term
子句中所指定的語言,來進行文字分隔、字根處理及同義字和贅字處理。
下表顯示用來儲存全文檢索索引資料的語言。此語言是以 Microsoft SQL Server 安裝期間所選擇的 Unicode 定序地區設定識別碼為基礎。
Unicode 定序地區設定識別碼 | 全文檢索資料儲存的語言 |
---|---|
中文注音符號 (台灣) |
繁體中文 |
中文標點符號 |
簡體中文 |
中文筆劃 |
簡體中文 |
中文筆劃 (台灣) |
繁體中文 |
荷蘭文 |
荷蘭文 |
英國英文 |
英國英文 |
法文 |
法文 |
一般 Unicode |
美國英文 |
德文 |
德文 |
德文電話簿 |
德文 |
義大利文 |
義大利文 |
日文 |
日文 |
日文 (Unicode) |
日文 |
韓文 |
韓文 |
韓文 (Unicode) |
韓文 |
西班牙文 (西班牙) |
西班牙文 |
瑞典/芬蘭 |
瑞典文 |
所有未列在此清單內的其他 Unicode 定序地區設定識別碼數值將對應到中性語言文字分隔與字根,它將使用空白字元 (White Space) 來分隔文字。
附註: |
---|
Unicode 定序地區設定識別碼設定,會使用於所有適用全文檢索索引的資料類型 (例如 char、nchar 等)。若您為 char、varchar 或 text 類型資料行設定的排序順序與 Unicode 定序地區設定識別碼語言不同時,則針對 char、varchar 與 text 類型資料行進行全文檢索索引與查詢時,仍會使用 Unicode 定序地區設定識別碼。 |
請參閱
其他資源
全文檢索搜尋概念
資料類型 (Transact-SQL)
CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)