Sdílet prostřednictvím


Konfigurace a správa souborů tesaurus pro vyhledávání Full-Text

platí pro:SQL Server

Sql Server Full-Text Vyhledávací dotazy mohou hledat synonyma uživatelem zadaných termínů pomocí Full-Text Search tesaurus. Každý tesaurus definuje sadu synonym pro určitý jazyk. Díky vývoji tesauru přizpůsobeného fulltextovým datům můžete efektivně rozšířit rozsah fulltextových dotazů na tato data.

Porovnávání tezauru probíhá u všech FREETEXT a FREETEXTABLE dotazů a u všech CONTAINS a CONTAINSTABLE dotazů, které specifikují klauzuli FORMSOF THESAURUS.

Full-Text Hledat tesaurus je textový soubor XML.

Co je v teauru

Než můžou fulltextové vyhledávací dotazy hledat synonyma v daném jazyce, musíte pro daný jazyk definovat mapování tesaurus (tj. synonyma). Každý tesaurus musí být ručně nakonfigurovaný tak, aby definoval následující:

  • Rozšiřující sada

    Rozšiřující sada obsahuje skupinu synonym, jako je "spisovatel," "autor" a "novinář," které jsou zaměnitelné při použití fulltextového vyhledávání. Dotazy, které obsahují shodu pro všechna synonyma v rozšiřující sadě, se rozbalí tak, aby zahrnovaly všechna ostatní synonyma v rozšiřující sadě.

    Další informace naleznete v části Struktura XML rozšiřující sady později v tomto tématu.

  • Náhradní sada

    Náhradní sada obsahuje textový vzor, který se má nahradit sadou nahrazení. Příklad najdete v části struktura XML sady náhrad dále v tomto tématu.

  • Nastavení diakritiky

    U daného tezauru jsou všechny vzory hledání buď citlivé na diakritiku nebo na ni nerozlišují, včetně znaků jako tilda (~), přízvuková čárka (´) nebo přehláska (¨) (to znamená, diakriticky citlivé nebo diakriticky nerozlišující). Předpokládejme například, že v fulltextovém dotazu zadáte vzor "kavárna", který se nahradí jinými vzory. Pokud je tezaurus nerozlišující, fulltextové vyhledávání nahradí vzory "café" a "cafe". Pokud je tesaurus citlivý na zvýraznění, fulltextové vyhledávání nahradí pouze vzor "kavárna". Ve výchozím nastavení je tezaurus necitlivý na diakritiku.

Výchozí soubory tesaurus

SQL Server poskytuje sadu souborů XML tesaurus, jeden pro každý podporovaný jazyk. Tyto soubory jsou v podstatě prázdné. Obsahují pouze strukturu XML nejvyšší úrovně, která je společná pro všechny tezaury SQL Serveru a příklad okomentovaného tezauru.

Umístění souborů tesaurus

Výchozí umístění souborů tesaurus je:

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

Toto výchozí umístění obsahuje následující soubory:

  • soubory tesaurus specifické pro jazyk

    Instalační program nainstaluje prázdné soubory tezauru ve výše uvedeném místě. Pro každý podporovaný jazyk je k dispozici samostatný soubor. Správce systému může tyto soubory přizpůsobit.

    Výchozí názvy souborů tesaurus používají následující formát:

    'ts' + <three-letter language-abbreviation> + '.xml'

    Název souboru tesaurus pro daný jazyk je zadán v registru v následující hodnotě:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>

  • Soubor globálního tezauru

    Soubor globálního tezauru je prázdný, tsGlobal.xml.

Změna umístění souboru tesaurus

Umístění a názvy souboru tesaurus můžete změnit změnou jeho klíče registru. Pro každý jazyk je umístění souboru tesaurus zadáno v následující hodnotě v registru:

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

Globální soubor tezauru odpovídá neutrálnímu jazyku s LCID 0. Tuto hodnotu můžou změnit jenom správci.

Jak fulltextové dotazy používají tesaurus

Dotaz tesaurus používá jazykově specifický tesaurus i globální tesaurus.

  1. Nejprve dotaz vyhledá soubor specifický pro jazyk a načte ho ke zpracování (pokud ještě není načten). Dotaz se rozšíří tak, aby zahrnoval synonyma specifická pro jazyk určená sadou rozšiřování a pravidly nahrazovací sady v souboru tezaurus.
  2. Tyto kroky se pak opakují pro globální tesaurus. Pokud je však termín již součástí shody v souboru tesauru specifického pro jazyk, není termín způsobilý pro porovnávání v globálním tesauru.

Struktura souboru tesaurus

Každý soubor tesaurus definuje kontejner XML, jehož ID je Microsoft Search Thesaurus, a komentář, <!-- ... -->, který obsahuje ukázkový tesaurus. Tesaurus je definován v <thesaurus> elementu, který obsahuje vzorky podřízených prvků, které definují nastavení diakritiky, rozšiřující sady a náhradní sady.

Typický prázdný soubor tesaurus obsahuje následující text 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 2012</sub>  
        </replacement>  
        <expansion>  
            <sub>run</sub>  
            <sub>jog</sub>  
        </expansion>  
    </thesaurus>  
-->  
</XML>  

Struktura XML expanzní sady

Každá rozšiřující sada je uzavřena v <expansion> elementu. V tomto prvku zadáte jednu nebo více náhrad v <sub> elementu. V rozšiřující sadě můžete určit skupinu nahrazení, která jsou synonymy sebe navzájem.

Oddíl rozšíření můžete například upravit tak, aby se se slovy "writer", "author" a "novinář" zacházelo jako se synonymy. fulltextové vyhledávací dotazy, které obsahují shody v jedné náhradě, se rozšiřují tak, aby zahrnovaly všechny ostatní náhrady zadané v rozsahu rozšíření. Ve výše uvedeném příkladu, když zadáte dotaz FORMS OF THESAURUS nebo FREETEXT na slovo "author", fulltextové vyhledávání také vrátí výsledky obsahující slova "writer" a "novinář".

Takto by část rozšiřující sady vypadala pro výše uvedený příklad:

<expansion>  
        <sub>writer</sub>  
        <sub>author</sub>  
        <sub>journalist</sub>  
</expansion>  

Struktura XML náhradní sady

Každá náhradní sada je uzavřena v prvku <replacement>. V tomto prvku můžete v elementu <pat> určit jeden nebo více vzorů a v elementech <sub> určit nula nebo více nahrazení, jedno pro každé synonymum. Můžete zadat vzor, který se má nahradit náhradou. Vzory a náhrady můžou obsahovat slovo nebo posloupnost slov. Pokud pro vzor není zadána žádná náhrada, má vliv na odebrání vzoru z uživatelského dotazu.

Předpokládejme například, že chcete, aby se dotazy na "Win8" nahradily nahrazením "Windows Server 2012" nebo "Windows 8.0". Pokud spustíte fulltextový dotaz pro Win8, fulltextové vyhledávání vrátí jenom výsledky hledání obsahující Windows Server 2012 nebo Windows 8.0. Nevrací výsledky obsahující "Win8". Důvodem je, že vzor "Win8" byl nahrazen vzory "Windows Server 2012" a "Windows 8.0".

V tomto příkladu by část náhradní sady vypadala takto:

<replacement>  
        <pat>Win8</pat>  
        <sub>Windows Server 2012</sub>  
        <sub>Windows 8.0</sub>  
</replacement>  

Pokud máte dvě náhradní sady s podobnými vzory, bude mít přednost delší z těchto dvou sad. Pokud například spustíte dotaz ve funkci FORMS OF THESAURUS pro „online komunitu Internet Explorer“ a máte následující sady náhrad, sada náhrad „Internet Explorer“ bude mít přednost před sadou náhrad „Internet“. Dotaz se proto zpracuje jako online komunita IE nebo online komunita IE 9.

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

a

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

Struktura XML nastavení diakritiky

Diakritické nastavení tesauru je určeno v jednom <diacritics_sensitive> prvku. Tento prvek obsahuje celočíselnou hodnotu, která řídí citlivost zvýraznění následujícím způsobem:

Nastavení diakritiky Hodnota XML
Nerozlišující přízvuk 0 <diacritics_sensitive>0</diacritics_sensitive>
Citlivá na přízvuk 1 <diacritics_sensitive>1</diacritics_sensitive>

Poznámka

Toto nastavení se dá použít jenom jednou v souboru a platí pro všechny vzory hledání v souboru. Toto nastavení nelze zadat pro jednotlivé vzory.

Úprava souboru tesaurus

Tesaurus pro daný jazyk můžete nakonfigurovat úpravou souboru tesaurus (soubor XML). Během instalace se nainstalují prázdné soubory tesaurus, které obsahují pouze kontejner <xml> a ukázkový <thesaurus> s komentáři. Aby plně textové vyhledávací dotazy, které hledají synonyma, fungovaly správně, musíte vytvořit skutečný prvek <thesaurus>, který definuje sadu synonym. Můžete definovat dvě formy synonym, rozšiřující sady a náhradní sady.

Úprava souboru tesaurus

  1. Otevřete soubor tesaurus v Poznámkovém bloku nebo jiném textovém editoru.

  2. Pokud soubor tesaurus upravujete poprvé, odeberte následující řádky komentářů na začátku a na konci souboru, v uvedeném pořadí:

    <!--Commented out  
    -->  
    
  3. Přidání, úprava nebo odstranění náhradní sady nebo rozšiřující sady

  4. Uložte soubor a zavřete Poznámkový blok.

  5. Pomocí sp_fulltext_load_thesaurus_file načtěte obsah souboru tezaurus do databáze tempdb a zadejte místní identifikátor (LCID), který odpovídá jazyku souboru tezaurus. Například pro anglický tezaurus soubor, tsenu.xml, odpovídající LCID je 1033.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

Doporučení pro úpravy souborů tesaurus

Doporučujeme, aby položky v souboru tesaurus neobsahují žádné speciální znaky. Důvodem je, že oddělovače slov mají jemné chování s ohledem na speciální znaky. Pokud položka tesaurus obsahuje nějaké speciální znaky, můžou mít dělení slov v kombinaci s danou položkou jemný dopad na chování fulltextového dotazu.

Doporučujeme, aby položky <sub> neobsahovaly žádná stopslova, protože stopslova jsou z fulltextového indexu vynechána. Dotazy jsou rozšířeny tak, aby zahrnovaly <sub> položky ze souboru tezauru, a pokud položka <sub> obsahuje stop slova, velikost dotazu se zbytečně zvýší.

Omezení pro úpravy souborů tesaurus

Pro úpravy souboru tesaurus platí následující omezení:

  • Soubory tesaurus můžou aktualizovat, upravovat nebo odstraňovat pouze správci systému.

  • Při úpravách souborů tesaurus pomocí nástrojů textového editoru musí být soubory uloženy ve formátu Unicode a musí být zadány značky pořadí bajtů.

  • Položky thesauru nemohou být prázdné nebo rozdělené na prázdný řetězec.

  • Fráze v souboru tesaurus nesmí být delší než 512 znaků.

  • Tesaurus nesmí obsahovat žádné duplicitní položky mezi <sub> položkami rozšiřujících sad a <pat> prvků náhradních sad.

Viz také

OBSAHUJE (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
sp_fulltext_load_thesaurus_file (Transact-SQL)
sys.dm_fts_parser (Transact-SQL)