Dela via


Konfigurera och hantera synonymordboksfiler för Full-Text search

gäller för:SQL Server

SQL Server Full-Text Sökfrågor kan söka synonymer till användarspecificerade termer med hjälp av en Full-Text Sök synonymordlista. Varje synonymordlista definierar en uppsättning synonymer för ett visst språk. Genom att utveckla en synonymordlista som är anpassad till dina fulltextdata kan du effektivt bredda omfattningen av fulltextfrågor på dessa data.

Matchning med synonymordlista sker för alla FREETEXT- och FREETEXTABLE frågor och för de CONTAINS- och CONTAINSTABLE frågor som anger FORMSOF THESAURUS-satsen.

En Full-Text Search thesaurus är en XML-textfil.

Vad finns i en synonymordlista

Innan fulltextsökningsfrågor kan söka efter synonymer på ett visst språk måste du definiera synonymmappningar (dvs. synonymer) för det språket. Varje synonymordlista måste konfigureras manuellt för att definiera följande:

  • Expansionspaket

    En expansionsuppsättning innehåller en grupp synonymer som "skribent", "författare" och "journalist" som ersätts med varandra med en fulltextfråga. Frågor som innehåller en matchning för alla synonymer i en expansionsuppsättning utökas till att omfatta alla andra synonymer i expansionsuppsättningen.

    För mer information, se XML-struktur för en expansionsuppsättning senare i det här avsnittet.

  • Ersättningskit

    En ersättningsuppsättning innehåller ett textmönster som ska ersättas av en ersättningsuppsättning. Ett exempel finns i avsnittet XML-struktur för en ersättningsuppsättning senare i det här avsnittet.

  • Inställning för diakritiska tecken

    För en viss synonymordlista är alla sökmönster antingen känsliga eller okänsliga för diakritiska märken som tilde (~), akut accentmarkering ("), eller umlaut (̈) (dvs. accentkänslig eller accentokänslig). Anta till exempel att du anger mönstret "café" som ska ersättas av andra mönster i en fulltextfråga. Om synonymordlistan är accentokänslig ersätter fulltextsökning mönstren "café" och "cafe". Om synonymordlistan är accentkänslig ersätter fulltextsökning endast mönstret "café". Som standard är en synonymordlista okänslig för accent.

Standardfiler för synonymordlistan

SQL Server tillhandahåller en uppsättning XML-synonymfiler, en för varje språk som stöds. Dessa filer är i stort sett tomma. De innehåller endast xml-strukturen på den översta nivån som är gemensam för alla SQL Server-synonymer och en utkommenterad exempelordlista.

Plats för synonymordboksfiler

Standardplatsen för synonymordlistans filer är:

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

Den här standardplatsen innehåller följande filer:

  • Språkspecifika synonymordboksfiler

    Installationsprogrammet installerar tomma synonymordboksfiler på platsen ovan. En separat fil tillhandahålls för varje språk som stöds. En systemadministratör kan anpassa dessa filer.

    Standardfilnamnen för synonymordlistans filer använder följande format:

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

    Namnet på synonymfilen för ett visst språk anges i registret i följande värde:

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

  • Filen globala synonymordlista

    En tom global tesaurusfil tsGlobal.xml.

Ändra platsen för en synonymfil

Du kan ändra platsen och namnen på en synonymfil genom att ändra dess registernyckel. För varje språk anges platsen för synonymordboksfilen i följande värde i registret:

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

Den globala synonymordlistan motsvarar det neutrala språket med LCID 0. Det här värdet kan bara ändras av administratörer.

Hur fulltextfrågor använder synonymordlistan

En synonymfråga använder både en språkspecifik synonymordbok och den globala synonymordlistan.

  1. Först söker frågan upp den språkspecifika filen och läser in den för bearbetning (såvida den inte redan har lästs in). Frågan expanderas så att den innehåller de språkspecifika synonymer som anges av expansionsuppsättningen och ersättningsuppsättningsregler i synonymordboksfilen.
  2. De här stegen upprepas sedan för den globala synonymordlistan. Men om en term redan är en del av en matchning i den språkspecifika synonymfilen är termen inte berättigad till matchning i den globala synonymordlistan.

Struktur för en synonymfil

Varje synonymfil definierar en XML-container vars ID är Microsoft Search Thesaurusoch en kommentar, <!-- ... -->, som innehåller ett exempel på synonymordlistan. Synonymordlistan definieras i ett <thesaurus>-element som innehåller exempel på de underordnade elementen som definierar inställningen för diakritiska tecken, expansionsuppsättningar och ersättningsuppsättningar.

En vanlig tom synonymfil innehåller följande XML-text:

<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>  

XML-struktur för en expansionsuppsättning

Varje expansionsuppsättning omges av ett <expansion> element. I det här elementet anger du en eller flera ersättningar i ett <sub> element. I expansionsuppsättningen kan du ange en grupp med ersättningar som är synonymer till varandra.

Du kan till exempel redigera expansionsavsnittet för att behandla ersättningarna "writer", "author" och "journalist" som synonymer. Fulltextsökningsfrågor som innehåller matchningar i en ersättning utökas till att omfatta alla andra ersättningar som anges i expansionsuppsättningen. När du i föregående exempel utfärdar en FORMS OF THESAURUS eller en FREETEXT-fråga för ordet "författare" returnerar fulltextsökning också sökresultat som innehåller orden "författare" och "journalist".

Så här skulle avsnittet med expansionsuppsättningar se ut i exemplet ovan:

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

XML-struktur för en ersättningsuppsättning

Varje ersättningsuppsättning omges av ett <replacement> element. I det här elementet kan du ange ett eller flera mönster i ett <pat> element och noll eller fler ersättningar i <sub> element, ett per synonym. Du kan ange ett mönster som ska ersättas av en ersättningsuppsättning. Mönster och ersättningar kan innehålla ett ord eller en ordsekvens. Om det inte finns någon ersättning angiven för ett mönster har det effekten att mönstret tas bort från användarfrågan.

Anta till exempel att du vill att frågor för "Win8", mönstret, ska ersättas med "Windows Server 2012" eller "Windows 8.0", ersättningarna. Om du kör en fulltextfråga för "Win8" returnerar fulltextsökning endast sökresultat som innehåller "Windows Server 2012" eller "Windows 8.0". Det returnerar inte resultat som innehåller "Win8". Det beror på att mönstret "Win8" har "ersatts" av mönstren "Windows Server 2012" och "Windows 8.0".

Så här ser avsnittet för ersättningsuppsättningen ut i exemplet ovan:

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

Om du har två ersättningsuppsättningar med liknande mönster som matchas, har den längre av de två företräde. Om du till exempel kör en FORMS OF THESAURUS-fråga för "Internet Explorer online community" och du har följande ersättningsuppsättningar har ersättningsuppsättningen "Internet Explorer" företräde framför ersättningsuppsättningen "Internet". Frågan bearbetas därför som "IE online community" eller "IE 9 online community".

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

och

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

XML-strukturen för diakritiska tecken-inställningen

Den diakritiska inställningen för en synonymordlista anges i ett enda <diacritics_sensitive>-element. Det här elementet innehåller ett heltalsvärde som styr accentkänsligheten enligt följande:

Inställning för diakritiska tecken Värde XML
Accentokänslig 0 <diacritics_sensitive>0</diacritics_sensitive>
Accentkänslig 1 <diacritics_sensitive>1</diacritics_sensitive>

Anteckning

Den här inställningen kan bara användas en gång i filen och den gäller för alla sökmönster i filen. Det går inte att ange den här inställningen för enskilda mönster.

Redigera en synonymordbok

Du kan konfigurera synonymordlistan för ett visst språk genom att redigera dess synonymordboksfil (en XML-fil). Under installationen installeras tomma synonymlistor som endast innehåller <xml>-behållaren och ett kommenterat exempel på <thesaurus>-element. För att fulltextsökningsfrågor som söker efter synonymer ska fungera korrekt måste du skapa ett verkligt <thesaurus> element som definierar en uppsättning synonymer. Du kan definiera två former av synonymer, expansionsuppsättningar och ersättningsuppsättningar.

Redigera en synonymordbok

  1. Öppna synonymordboksfilen i Anteckningar eller någon annan textredigerare.

  2. Om du redigerar synonymordboksfilen för första gången tar du bort följande kommentarsrader i början respektive slutet av filen:

    <!--Commented out  
    -->  
    
  3. Lägg till, ändra eller ta bort en ersättningsuppsättning eller en expansionsuppsättning.

  4. Spara filen och stäng Anteckningar.

  5. Använd sp_fulltext_load_thesaurus_file för att läsa in innehållet i synonymordboksfilen i tempdb och ange den lokala identifieraren (LCID) som motsvarar språket i synonymordboksfilen. För den engelska synonymfilen tsenu.xmlär motsvarande LCID till exempel 1033.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

Rekommendationer för redigering av synonymfiler

Vi rekommenderar att posterna i synonymordboksfilen inte innehåller några specialtecken. Detta beror på att ordbrytare har subtila beteenden när det gäller specialtecken. Om en synonymordbokspost innehåller specialtecken kan ordbrytare som används i kombination med den posten få subtila beteendekonsekvenser för en fulltextfråga.

Vi rekommenderar att <sub> poster inte innehåller några stoppord eftersom stoppord utelämnas från fulltextindexet. Frågor utökas till att omfatta <sub> poster från en synonymfil, och om en <sub> post innehåller stoppord ökar frågestorleken i onödan.

Begränsningar för redigering av synonymfiler

Följande begränsningar gäller för redigering av en synonymfil:

  • Det är bara systemadministratörer som kan uppdatera, ändra eller ta bort synonymordlistans filer.

  • När du redigerar synonymordboksfiler med textredigeringsverktyg måste filerna sparas i Unicode-format och byteordningsmarkeringar måste anges.

  • Synonymordboksposter får inte vara tomma eller ordbrytningar till en tom sträng.

  • Fraser i synonymordboksfilen får inte vara längre än 512 tecken.

  • En synonymordlista får inte ha några duplicerade poster bland posterna i <sub>-expansionsuppsättningar och elementen i <pat>-ersättningsuppsättningar.

Se även

INNEHÅLLER (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
sp_fulltext_load_thesaurus_file (Transact-SQL)
sys.dm_fts_parser (Transact-SQL)