Delen via


Synoniemenlijstbestanden configureren en beheren voor Full-Text Zoeken

van toepassing op:SQL Server-

SQL Server Full-Text Search-query's kunnen zoeken naar synoniemen van door de gebruiker opgegeven termen via het gebruik van een Full-Text Search synoniemenlijst. Elke synoniemenlijst definieert een set synoniemen voor een specifieke taal. Door een synoniemenlijst te ontwikkelen die is afgestemd op uw gegevens in volledige tekst, kunt u het bereik van query's op volledige tekst op die gegevens effectief uitbreiden.

Synoniemenlijstkoppeling vindt plaats voor alle FREETEXT-- en FREETEXTABLE--queries en voor alle CONTAINS-- en CONTAINSTABLE--queries die de FORMSOF THESAURUS-clause opgeven.

Een Full-Text-zoekthesaurus is een XML-tekstbestand.

Wat staat er in een synoniemenlijst

Voordat zoekopdrachten in volledige tekst kunnen zoeken naar synoniemen in een bepaalde taal, moet u synoniemenlijsten (synoniemen) voor die taal definiëren. Elke synoniemenlijst moet handmatig worden geconfigureerd om het volgende te definiëren:

  • Uitbreidingsset

    Een uitbreidingsset bevat een groep synoniemen, zoals 'writer', 'author' en 'journalist' die door een volledige-tekstquery worden vervangen. Query's die een overeenkomst bevatten voor een synoniem in een uitbreidingsset, worden uitgebreid met elk ander synoniem in de uitbreidingsset.

    Zie XML-structuur van een uitbreidingsset verderop in dit onderwerp voor meer informatie.

  • Vervangingsset

    Een vervangende set bevat een tekstpatroon dat moet worden vervangen door een vervangingsset. Zie de sectie XML-structuur van een vervangende set verderop in dit onderwerp voor een voorbeeld.

  • Instelling voor diakritische tekens

    Voor een bepaalde synoniemenlijst zijn alle zoekpatronen gevoelig of niet gevoelig voor diakritische tekens zoals een tilde (~), accenten (´) of umlaut (¨) (dat wil zeggen accentgevoelig of niet accentgevoelig). Stel dat u het patroon 'café' opgeeft dat moet worden vervangen door andere patronen in een query met volledige tekst. Als de synoniemenlijst accentongevoelig is, vervangt volledige-tekst zoeken de patronen 'café' en 'cafe'. Als de synoniemenlijst accentgevoelig is, vervangt zoeken in volledige tekst alleen het patroon 'café'. Standaard is een synoniemenlijst accentongevoelig.

Standaard-synoniemenlijstbestanden

SQL Server biedt een set XML-synoniemenlijstbestanden, één voor elke ondersteunde taal. Deze bestanden zijn in wezen leeg. Ze bevatten alleen de XML-structuur op het hoogste niveau die gebruikelijk is voor alle SQL Server-synoniemenlijsten en een uitgecommentarieerde voorbeeld-synoniemenlijst.

Locatie van synoniemenlijstbestanden

De standaardlocatie van synoniemenlijstbestanden is:

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

Deze standaardlocatie bevat de volgende bestanden:

  • taalspecifieke synoniemenlijstbestanden

    Setup installeert lege synoniemenlijstbestanden op de bovenstaande locatie. Er wordt voor elke ondersteunde taal een afzonderlijk bestand opgegeven. Een systeembeheerder kan deze bestanden aanpassen.

    De standaardbestandsnamen van synoniemenlijstbestanden gebruiken de volgende indeling:

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

    De naam van het synoniemenlijstbestand voor een bepaalde taal wordt opgegeven in het register in de volgende waarde:

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

  • Het algemene synoniemenlijstbestand

    Een leeg globaal synoniemenlijstbestand, tsGlobal.xml.

De locatie van een synoniemenlijstbestand wijzigen

U kunt de locatie en namen van een synoniemenlijstbestand wijzigen door de registersleutel te wijzigen. Voor elke taal wordt de locatie van het synoniemenlijstbestand opgegeven in de volgende waarde in het register:

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

Het algemene synoniemenlijstbestand komt overeen met de neutrale taal met LCID 0. Deze waarde kan alleen door beheerders worden gewijzigd.

Hoe zoekopdrachten in volledige tekst de synoniemenlijst gebruiken

Een synoniemenlijstquery maakt gebruik van zowel een taalspecifieke synoniemenlijst als de algemene synoniemenlijst.

  1. Eerst zoekt de query het taalspecifieke bestand op en laadt het voor verwerking (tenzij het al is geladen). De query wordt uitgebreid met de taalspecifieke synoniemen die zijn opgegeven door de uitbreidingsset en vervangende regels in het synoniemenlijstbestand.
  2. Deze stappen worden vervolgens herhaald voor de algemene synoniemenlijst. Als een term echter al deel uitmaakt van een overeenkomst in het taalspecifieke synoniemenlijstbestand, kan de term niet worden vergeleken in de algemene synoniemenlijst.

Structuur van een synoniemenlijstbestand

Elk synoniemenlijstbestand definieert een XML-container waarvan de id Microsoft Search Thesaurusis en een opmerking, <!-- ... -->, die een voorbeeldlijst bevat. De synoniemenlijst wordt gedefinieerd in een <thesaurus>-element dat voorbeelden bevat van de subelementen die de instellingen voor diakritische tekens, uitbreidingsopties en vervangingsopties bepalen.

Een typisch leeg synoniemenlijstbestand bevat de volgende XML-tekst:

<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-structuur van een uitbreidingsset

Elke uitbreidingsset bevindt zich in een <expansion> element. Binnen dit element geeft u een of meer vervangingen op in een <sub> element. In de uitbreidingsset kunt u een groep vervangingen opgeven die synoniemen van elkaar zijn.

U kunt bijvoorbeeld de uitbreidingssectie bewerken om de vervangingen 'writer', 'author' en 'journalist' als synoniemen te behandelen. zoekquery's voor volledige tekst die overeenkomsten in de ene vervanging bevatten, worden uitgebreid met alle andere vervangingen die zijn opgegeven in de uitbreidingsset. Als u daarom in het voorgaande voorbeeld een FORMULIER VAN SYNONIEMENLIJST of een FREETEXT-query voor het woord 'auteur' geeft, retourneert zoeken in volledige tekst ook zoekresultaten met de woorden 'schrijver' en 'journalist'.

Dit is hoe de sectie van de uitbreidingsset eruit zou zien voor het bovenstaande voorbeeld:

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

XML-structuur van een vervangende set

Elke vervangingsset bevindt zich in een <replacement> element. Binnen dit element kunt u een of meer patronen opgeven in een <pat> element en nul of meer vervangingen in <sub> elementen, één per synoniem. U kunt een patroon opgeven dat moet worden vervangen door een vervangingsset. Patronen en vervangingen kunnen een woord of een reeks woorden bevatten. Als er geen vervanging is opgegeven voor een patroon, heeft dit het effect van het verwijderen van het patroon uit de gebruikersquery.

Stel dat u query's voor 'Win8', het patroon, wilt vervangen door 'Windows Server 2012' of 'Windows 8.0', de vervangingen. Als u een volledige-tekstquery uitvoert voor Win8, retourneert zoeken in volledige tekst alleen zoekresultaten met 'Windows Server 2012' of 'Windows 8.0'. Er worden geen resultaten geretourneerd die Win8 bevatten. Dit komt doordat het patroon Win8 is vervangen door de patronen 'Windows Server 2012' en 'Windows 8.0'.

Dit is hoe de sectie vervangende set eruit zou zien voor het bovenstaande voorbeeld:

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

Als u twee vervangingssets hebt waarbij vergelijkbare patronen worden gematcht, krijgt de langste voorrang. Als u bijvoorbeeld een FORMS OF THESAURUS-query uitvoert voor 'Internet Explorer online community' en u de volgende vervangingssets hebt, heeft de vervangingsset Internet Explorer voorrang op de vervangingsset Internet. De query wordt daarom verwerkt als 'IE online community' of 'IE 9 online community'.

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

en

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

XML-structuur van de instelling voor diakritische tekens

De diakritische instelling van een synoniemenlijst wordt opgegeven in één <diacritics_sensitive> element. Dit element bevat een geheel getal dat de gevoeligheid van accenten bepaalt, als volgt:

Instelling voor diakritische tekens Waarde XML
Accentgevoelig 0 <diacritics_sensitive>0</diacritics_sensitive>
Accentgevoelig 1 <diacritics_sensitive>1</diacritics_sensitive>

Notitie

Deze instelling kan slechts één keer in het bestand worden toegepast en is van toepassing op alle zoekpatronen in het bestand. Deze instelling kan niet worden opgegeven voor afzonderlijke patronen.

Een synoniemenlijstbestand bewerken

U kunt de synoniemenlijst voor een bepaalde taal configureren door het synoniemenlijstbestand (een XML-bestand) te bewerken. Tijdens de installatie worden lege synoniemenlijstbestanden geïnstalleerd, die alleen de <xml>-container en een uitgecommentarieerd voorbeeld van een <thesaurus>-element bevatten. Om ervoor te zorgen dat zoekopdrachten in volledige tekst naar synoniemen goed functioneren, moet u een daadwerkelijk <thesaurus>-element maken waarmee een set synoniemen wordt gedefinieerd. U kunt twee vormen van synoniemen, uitbreidingssets en vervangingssets definiëren.

Een synoniemenlijstbestand bewerken

  1. Open het synoniemenlijstbestand in Kladblok of een andere teksteditor.

  2. Als u het synoniemenlijstbestand voor het eerst bewerkt, verwijdert u respectievelijk de volgende opmerkingenregels aan het begin en einde van het bestand:

    <!--Commented out  
    -->  
    
  3. Een vervangende set of een uitbreidingsset toevoegen, wijzigen of verwijderen.

  4. Sla het bestand op en sluit Kladblok.

  5. Gebruik sp_fulltext_load_thesaurus_file om de inhoud van het synoniemenlijstbestand in tempdb te laden, waarbij u de lokale id (LCID) opgeeft die overeenkomt met de taal van het synoniemenlijstbestand. Voor bijvoorbeeld het Engelse synoniemenlijstbestand, tsenu.xml, is de bijbehorende LCID 1033.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

Aanbevelingen voor het bewerken van synoniemenlijstbestanden

Het is raadzaam dat vermeldingen in het synoniemenlijstbestand geen speciale tekens bevatten. Dit komt doordat woordonderbrekers subtiele gedragingen hebben met betrekking tot speciale tekens. Als een synoniemenlijstvermelding speciale tekens bevat, kunnen woordonderbrekers die worden gebruikt in combinatie met die vermelding subtiele gedragseffecten hebben voor een query in volledige tekst.

Het is raadzaam dat <sub> vermeldingen geen stopwoorden bevatten, omdat stopwords worden weggelaten uit de index voor volledige tekst. Query's worden uitgebreid met de <sub> vermeldingen uit een synoniemenlijstbestand en als een <sub> vermelding stopwoorden bevat, neemt de querygrootte onnodig toe.

Beperkingen voor het bewerken van synoniemenlijstbestanden

De volgende beperkingen gelden voor het bewerken van een synoniemenlijstbestand:

  • Alleen systeembeheerders kunnen synoniemenlijstbestanden bijwerken, wijzigen of verwijderen.

  • Wanneer u synoniemenlijstbestanden bewerkt met teksteditorhulpprogramma's, moeten de bestanden worden opgeslagen in Unicode-indeling en moeten bytevolgordemarkeringen worden opgegeven.

  • Vermeldingen in de synoniemenlijst mogen niet leeg zijn of leiden tot een lege tekenreeks.

  • Zinnen in het synoniemenlijstbestand mogen niet langer zijn dan 512 tekens.

  • Een synoniemenlijst mag geen dubbele items bevatten tussen de <sub> items van uitbreidingsverzamelingen en de <pat> elementen van vervangingsverzamelingen.

Zie ook

BEVAT (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
VRIJETEKST (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
sp_fulltext_load_thesaurus_file (Transact-SQL)
sys.dm_fts_parser (Transact-SQL)