同義字組態

在 SQL Server 中,全文檢索查詢可以透過使用同義字 (Thesaurus) 搜尋使用者指定之詞彙的同義字 (Synonym)。SQL Server「同義字」(Thesaurus) 會針對特定語言定義一組同義字 (Synonym)。系統管理員可以定義兩種同義字形式:展開集和取代集。透過開發符合全文檢索資料的同義字,您可以有效地擴大針對該資料進行全文檢索查詢的範圍。同義字比對只會針對指定 FORMSOF THESAURUS 子句的 CONTAINS 和 CONTAINSTABLE 查詢以及 FREETEXT 和 FREETEXTABLE 查詢進行。

您必須先針對給定的語言定義同義字 (Thesaurus) 對應 (同義字),然後伺服器執行個體上的全文檢索搜詢查詢才能尋找該語言的同義字 (Synonym)。您必須手動設定每個同義字,以便定義下列項目:

  • 變音符號設定

    對於給定的同義字而言,所有搜尋模式都會區分或不區分變音符號,例如波狀符號 (~)、尖重音符號 (´) 或母音變化 (¨) (亦即,「區分腔調字」(Accent Sensitive) 或「不區分腔調字」(Accent Insensitive))。例如,假設您在全文檢索查詢中,指定以其他模式取代模式 "café"。如果同義字不區分腔調字,全文檢索搜尋就會取代模式 "café" 和 "cafe"。如果同義字區分腔調字,全文檢索搜尋只會取代模式 "café"。根據預設,同義字不會區分腔調字。

    [!附註]

    如需有關變音符號的詳細資訊,請參閱 MSN Encarta Encyclopedia 上的<變音符號>(英文)。

  • 展開集

    展開集包含可以由全文檢索查詢彼此替代的一組同義字,例如 "writer"、"author" 和 "journalist"。包含展開集中任何同義字之相符項目的查詢會展開成包含展開集中的其他每個同義字。

    如需詳細資訊,請參閱本主題後面的「展開集的 XML 結構」。

  • 取代集

    取代集包含替代集所要取代的文字模式。如需範例,請參閱本主題後面的「取代集的 XML 結構」一節。

[!附註]

如需有關同義字檔案之限制和建議的詳細資訊,請參閱<如何:編輯同義字檔案 (全文檢索搜尋)>。

SQL Server 提供了一組 XML 同義字檔案 (每個支援的語言都有一個檔案)。這些檔案基本上都是空的。它們僅包含所有 SQL Server 同義字通用的最上層 XML 結構以及標記為註解的範例同義字。

這個主題包含可協助您達成這項工作的資訊,如下所示:

  • 同義字檔案的初始內容

  • 同義字檔案的位置

  • 查詢如何使用同義字檔案

  • 了解同義字檔案的結構

  • 使用同義字檔案

同義字檔案的初始內容

SQL Server 2008 隨附的同義字檔案都包含下列 XML 程式碼:

<XML ID="Microsoft Search Thesaurus">

<!--  Commented out

    <thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
        <expansion>
            <sub>Internet Explorer</sub>
            <sub>IE</sub>
            <sub>IE5</sub>
        </expansion>
        <replacement>
            <pat>NT5</pat>
            <pat>W2K</pat>
            <sub>Windows 2000</sub>
        </replacement>
        <expansion>
            <sub>run</sub>
            <sub>jog</sub>
        </expansion>
    </thesaurus>
-->
</XML>

[回到頂端]

同義字檔案的位置

同義字檔案的預設位置為:

<SQL_Server_data_files_path>\MSSQL10_50.MSSQLSERVER\MSSQL\FTDATA\

這個預設位置包含下列檔案:

  • 語言特有的同義字檔案

    安裝期間,空的同義字檔案會安裝在上述位置。系統會針對每個支援的語言提供一個個別的檔案。系統管理員可以自訂這些檔案。

    同義字檔案的預設檔案名稱會使用下列格式:

    'ts' + <由三個英文字母所組成的語言縮寫> + '.xml'

    給定語言之同義字檔案的名稱是使用下列值指定於登錄中:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>。

  • 通用同義字檔案

    空的通用同義字檔案:tsGlobal.xml。

您可以變更同義字檔案的登錄機碼,藉以變更其位置和名稱。針對每個語言,同義字檔案的位置會指定在下列登錄值中:

HKLM/SOFTWARE/Microsoft/Microsoft SQL Server/<instance name>/MSSearch/Language/<language-abbreviation>/TsaurusFile

通用同義字檔案會對應至 LCID 0 的中性語言。只有管理員能夠變更這個值。

[回到頂端]

查詢如何使用同義字檔案

同義字查詢會同時使用語言特有的同義字和通用同義字。首先,查詢會查閱語言特有的檔案並載入此檔案,以便進行處理 (除非已經載入此檔案)。查詢會展開成包含同義字 (Thesaurus) 檔案中展開集和取代集規則所指定的語言特有同義字 (Synonym)。然後,系統會針對通用同義字重複這些步驟。不過,如果某個詞彙已經是語言特有同義字檔案中相符項目的一部分,該詞彙就不適用於在通用同義字中比對。

[回到頂端]

了解同義字檔案的結構

每個同義字檔案都會定義識別碼為 Microsoft Search Thesaurus 的 XML 容器,以及包含範例同義字的 <!----> 註解。同義字定義於包含子元素範例的 <thesaurus> 元素中,而這些子元素會定義變音符號設定、展開集和取代集,如下所示:

  • 變音符號設定的 XML 結構

    同義字的變音符號設定指定於單一 <diacritics_sensitive> 元素中。這個元素包含可控制區分腔調字的整數值,如下所示:

    變音符號設定

    XML

    不區分腔調字

    0

    <diacritics_sensitive>0</diacritics_sensitive>

    區分腔調字

    1

    <diacritics_sensitive>1</diacritics_sensitive>

    [!附註]

    此設定只能在檔案中套用一次,而且它會套用至檔案中的所有搜尋模式。不能針對個別模式指定此設定。

  • 展開集的 XML 結構

    每個展開集都是用 <expansion> 元素括住。在這個元素內,您可以使用 <sub> 元素來指定一或多個替代項目。在展開集中,您可以指定一組彼此是同義字的替代項目。

    例如,您可以編輯展開區段,以便將 "writer"、"author" 和 "journalist" 替代項目視為同義字。包含某個替代項目之相符項目的全文檢索搜尋查詢會展開成包含展開集中指定的所有其他替代項目。因此,在上個範例中,發出 FORMS OF THESAURUS 或 FREETEXT 查詢以尋找 "author" 這個字時,全文檢索搜尋也會傳回內含 "writer" 和 "journalist" 這些字的搜尋結果。

    這是上例之展開集區段的樣子:

     <expansion>
             <sub>writer</sub>
             <sub>author</sub>
             <sub>journalist</sub>
     </expansion>
    
  • 取代集的 XML 結構

    每個取代集都是用 <replacement> 元素括住。在這個元素內,您可以使用 <pat> 元素來指定一或多個模式並且使用 <sub> 元素來指定零或多個替代項目 (每個同義字指定一個)。您也可以指定要用替代集取代的模式。模式和替代項目都可以包含單字或一串文字。如果沒有針對某個模式指定替代項目,其作用就是從使用者查詢中移除該模式。

    例如,假設您想要查詢 "W2K" (模式) 以將其取代為 "Windows 2000" 或 "XP" (替代項目)。如果您要執行全文檢索查詢以找出 "W2K",則全文檢索搜尋只會傳回內含 "Windows 2000" 或 "XP" 的搜尋結果。它不會傳回內含 "W2K" 的結果。這是因為 "W2K" 模式已「取代」為 "Windows 2000" 和 "XP" 模式。

    這是上例之取代集區段的樣子:

     <replacement>
             <pat>W2K</pat>
             <sub>Windows 2000</sub>
             <sub>XP</sub>
     </replacement>
    

    如果您有兩個相似模式相符的取代集,則這兩個取代集中長度較長之取代集的優先順序較高。例如,如果您執行 FORMS OF THESAURUS 查詢以找出 "Internet Explorer online community" 且具有下列取代集,則 "Internet Explorer" 取代集的優先順序高於 "Internet" 取代集。因此,系統會將該查詢處理為 "IE online community" 或 "IE 5 online community"。

    <replacement>
             <pat>Internet</pat>
             <sub>intranet</sub>
    </replacement>
    

    <replacement>
             <pat>Internet Explorer</pat>
             <sub>IE</sub>
             <sub>IE 5</sub>
    </replacement>
    

[回到頂端]

使用同義字檔案

編輯同義字檔案

載入更新的同義字檔案

檢視斷詞工具、同義字和停止清單組合的 Token 化結果