Configurare e gestire i file del thesaurus per la ricerca full-textConfigure and Manage Thesaurus Files for Full-Text Search

In SQL ServerSQL Server le query di ricerca full-text consentono di eseguire una ricerca di sinonimi dei termini specificati dall'utente usando un thesaurus della ricerca full-text. Full-Text Search queries can search for synonyms of user-specified terms through the use of a Full-Text Search thesaurus. Ogni theasurus definisce un set di sinonimi per una lingua specifica.Each thesaurus defines a set of synonyms for a specific language. Sviluppando un thesaurus basato sui dati full-text in uso, è possibile ampliare in modo efficace l'ambito delle query full-text su tali dati.By developing a thesaurus tailored to your full-text data, you can effectively broaden the scope of full-text queries on that data.

La corrispondenza con il thesaurus si verifica per tutte le query FREETEXT e FREETEXTABLE e per tutte le query CONTAINS e CONTAINSTABLE che specificano la clausola FORMSOF THESAURUS.Thesaurus matching occurs for all FREETEXT and FREETEXTABLE queries and for any CONTAINS and CONTAINSTABLE queries that specify the FORMSOF THESAURUS clause.

Un thesaurus di ricerca full-text è un file di testo XML.A Full-Text Search thesaurus is an XML text file.

Contenuto di un thesaurus What's in a thesaurus

Prima che le query di ricerca full-text siano in grado di eseguire la ricerca di sinonimi in una determinata lingua, è necessario definire mapping del thesaurus, ovvero sinonimi, per tale lingua.Before full-text search queries can look for synonyms in a given language, you have to define thesaurus mappings (that is, synonyms) for that language. È necessario configurare manualmente ogni thesaurus per definire gli elementi seguenti:Each thesaurus must be manually configured to define the following:

  • Set di espansioneExpansion set

    Un set di espansione contiene un gruppo di sinonimi, ad esempio "writer", "author" e "journalist", che vengono sostituiti gli uni con gli altri da una query full-text.An expansion set contains a group of synonyms such as "writer", "author", and "journalist" that are substituted for one another by a full-text query. Le query che contengono una corrispondenza per uno dei sinonimi in un set di espansione vengono espanse per includere ogni altro sinonimo nel set di espansione stesso.Queries that contain a match for any synonym in an expansion set are expanded to include every other synonym in the expansion set.

    Per altre informazioni, vedere Struttura XML di un set di espansione più avanti in questo argomento.For more information, see XML Structure of an Expansion Set later in this topic.

  • Set di sostituzioneReplacement set

    Un set di sostituzione include un criterio di testo da sostituire con parole specifiche.A replacement set contains a text pattern to be replaced by a substitution set. Vedere, ad esempio, la sezione Struttura XML di un set di sostituzione più avanti in questo argomento.For an example, see the section XML Structure of a Replacement Set later in this topic.

  • Impostazione dei segni diacriticiDiacritics setting

    Per un determinato thesaurus, tutti i criteri di ricerca supportano o non supportano la distinzione relativa ai segni diacritici come la tilde (~), l'accento acuto (´) o l'umlaut (¨), ovvero supportano la distinzione tra caratteri accentati e non accentati o non supportano la distinzione tra caratteri accentati e non accentati.For a given thesaurus, all search patterns are either sensitive or insensitive to diacritical marks such as a tilde (~), acute accent mark (´), or umlaut (¨) (that is, accent sensitive or accent insensitive). Si supponga, ad esempio, di specificare la sostituzione del criterio "café" con altri criteri in una query di ricerca full-text.For example, suppose you specify the pattern "café" to be replaced by other patterns in a full-text query. Se il thesaurus non supporta la distinzione tra caratteri accentati e non accentati, tramite la ricerca full-text verranno sostituiti i criteri "café" e "cafe".If the thesaurus is accent-insensitive, full-text search replaces the patterns "café" and "cafe". Se il thesaurus supporta la distinzione tra caratteri accentati e non accentati, tramite la ricerca full-text verrà sostituito solo il criterio "café".If the thesaurus is accent-sensitive, full-text search replaces only the pattern "café". Per impostazione predefinita, un thesaurus non supporta la distinzione tra caratteri accentati e non accentati.By default, a thesaurus is accent-insensitive.

File del thesaurus predefiniti Default thesaurus files

SQL ServerSQL Server offre un set di file XML del thesaurus, uno per ogni lingua supportata. provides a set of XML thesaurus files, one for each supported language. Tali file sono essenzialmente vuotiThese files are essentially empty. e contengono solo la struttura XML di livello principale comune a tutti i thesaurus di SQL ServerSQL Server e un thesaurus di esempio costituito da commenti.They contain only the top-level XML structure that is common to all SQL ServerSQL Server thesauruses and a commented-out sample thesaurus.

Posizione dei file del thesaurus Location of thesaurus files

Il percorso predefinito dei file del thesaurus è il seguente:The default location of the thesaurus files is:

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

Tale percorso predefinito contiene i file seguenti:This default location contains the following files:

  • File del thesaurus specifici della linguaLanguage-specific thesaurus files

    Il programma di installazione installa file del thesaurus vuoti nel percorso sopra indicato,Setup installs empty thesaurus files in the above location. uno per ogni lingua supportata.A separate file is provided for each supported language. Tali file possono essere personalizzati da un amministratore di sistema.A system administrator can customize these files.

    Per i nomi predefiniti dei file del thesaurus viene usato il formato seguente:The default file names of the thesaurus files use following format:

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

    Il nome del file del thesaurus per ogni lingua viene specificato nel valore seguente del Registro di sistema:The name of the thesaurus file for a given language is specified in the registry in the following value:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>  
    
  • File del thesaurus globaleThe global thesaurus file

    File del thesaurus globale vuoto denominato tsGlobal.xml.An empty global thesaurus file, tsGlobal.xml.

Modificare il percorso di un file del thesaurusChange the location of a thesaurus file

È possibile modificare il percorso e il nome di un file del thesaurus modificando la relativa chiave del Registro di sistema.You can change the location and names of a thesaurus file by changing its registry key. Per ogni lingua, il percorso del file del thesaurus viene specificato nel seguente valore del Registro di sistema:For each language, the location of the thesaurus file is specified in the following value in the registry:

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

Il file del thesaurus globale corrisponde alla lingua neutra con LCID 0.The global thesaurus file corresponds to the Neutral language with LCID 0. Questo valore può essere modificato solo dagli amministratori.This value can be changed by administrators only.

Uso del thesaurus per le query full-text How full-text queries use the thesaurus

Una query sul thesaurus usano sia un thesaurus specifico della lingua sia un thesaurus globale.A thesaurus query uses both a language-specific thesaurus and the global thesaurus.

  1. La query esegue innanzitutto la ricerca in un file specifico della lingua e lo carica per l'elaborazione, a meno che non sia già caricato.First, the query looks up the language-specific file and loads it for processing (unless it is already loaded). La query viene quindi espansa per includere i sinonimi specifici della lingua indicati dalle regole del set di espansione e del set di sostituzione nel file del thesaurus.The query is expanded to include the language-specific synonyms specified by the expansion set and replacement set rules in the thesaurus file.
  2. Questi passaggi vengono quindi ripetuti per il thesaurus globale.These steps are then repeated for the global thesaurus. Se, tuttavia, nel file del thesaurus specifico della lingua è già stata individuata una corrispondenza per un termine, tale termine non può essere considerato valido per la corrispondenza nel thesaurus globale.However, if a term is already part of a match in the language specific thesaurus file, the term is ineligible for matching in the global thesaurus.

Struttura di un file del thesaurus Structure of a thesaurus file

Ogni file del thesaurus definisce un contenitore XML, il cui ID è Microsoft Search Thesaurus, e un commento, <!--Each thesaurus file defines an XML container whose ID is Microsoft Search Thesaurus, and a comment, <!-- -->, che contiene un thesaurus di esempio.-->, that contains a sample thesaurus. Il thesaurus è definito in un elemento <thesaurus> contenente esempi degli elementi figlio che definiscono l'impostazione dei segni diacritici, i set di espansione e i set di sostituzione.The thesaurus is defined in a <thesaurus> element that contains samples of the child elements that define the diacritics setting, expansion sets, and replacement sets.

Un file del thesaurus vuoto tipico contiene gli elementi XML seguenti:A typical empty thesaurus file contains the following 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>  

Struttura XML di un set di espansione XML structure of an expansion set

Ogni set di espansione è racchiuso in un elemento <expansion>.Each expansion set is enclosed within an <expansion> element. All'interno di questo elemento è possibile specificare una o più sostituzioni in un elemento <sub>.Within this element, you specify one or more substitutions in a <sub> element. Nel set di espansione è possibile specificare un gruppo di sostituzioni che sono sinonimi una dell'altra.In the expansion set, you can specify a group of substitutions that are synonyms of each other.

Ad esempio, è possibile modificare la sezione di espansione per considerare le sostituzioni "writer", "author" e "journalist" come sinonimi.For example, you can edit the expansion section to treat the substitutions "writer", "author", and "journalist" as synonyms. per includere tutte le altre sostituzioni specificate nel set di espansione, vengono espanse le query di ricerca full-text che contengono corrispondenze in una sostituzione.full-text search queries that contain matches in one substitution are expanded to include all other substitutions specified in the expansion set. Di conseguenza, quando nell'esempio precedente si esegue una query FORMS OF THESAURUS o FREETEXT per la parola "author", vengono restituiti anche i risultati di ricerca contenenti le parole "writer" e "journalist".Therefore, in the preceding example, when you issue a FORMS OF THESAURUS or a FREETEXT query for the word "author", full-text search also returns search results containing the words "writer" and "journalist".

La sezione del set di espansione dell'esempio precedente sarà la seguente:This is what the expansion set section would look like for the above example:

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

Struttura XML di un set di sostituzione XML structure of a replacement set

Ogni set di sostituzione è racchiuso in un elemento <replacement>.Each replacement set is enclosed within a <replacement> element. All'interno di questo elemento è possibile specificare uno o più criteri in un elemento <pat> e zero o più sostituzioni in elementi <sub>, uno per sinonimo.Within this element you can specify one or more patterns in a <pat> element and zero or more substitutions in <sub> elements, one per synonym. È possibile specificare un criterio da sostituire con un set di sostituzione.You can specify a pattern to be replaced by a substitution set. I criteri e le sostituzioni possono contenere una parola o una sequenza di parole.Patterns and substitutions can contain a word, or a sequence of words. Se non viene specificata alcuna sostituzione per un criterio, questo verrà rimosso dalla query dell'utente.If there is no substitution specified for a pattern, it has the effect of removing the pattern from the user query.

Si supponga, ad esempio, di voler eseguire query per sostituire il criterio "Win8" con "Windows Server 2012" o "Windows 8.0".For example, suppose you want queries for "Win8", the pattern, to be replaced by "Windows Server 2012" or "Windows 8.0", the substitutions. Se si esegue una query full-text per "Win8", verranno restituiti solo i risultati di ricerca full-text contenenti le sostituzioni "Windows Server 2012" o "Windows 8.0".If you run a full-text query for "Win8", full-text search only returns search results containing "Windows Server 2012" or "Windows 8.0". ma non quelli contenenti "Win8".It does not return results containing "Win8". Questo accade perché "Win8" è stato "sostituito" con "Windows Server 2012" e "Windows 8.0".This is because the pattern "Win8" has been "replaced" by the patterns "Windows Server 2012" and "Windows 8.0".

La sezione del set di sostituzione dell'esempio sopra descritto sarebbe:This is what the replacement set section would look like for the above example:

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

Se sono presenti due set di sostituzione con criteri di testo simili da associare, il più lungo dei due ha la precedenza.If you have two replacement sets with similar patterns being matched, the longer of the two takes precedence. Se, ad esempio, si esegue una query FORMS OF THESAURUS per "Internet Explorer online community" e sono presenti i set di sostituzione indicati di seguito, "Internet Explorer" ha la precedenza su "Internet".For example, if you run a FORMS OF THESAURUS query for "Internet Explorer online community" and you have the following replacement sets, the "Internet Explorer" replacement set takes precedence over the "Internet" replacement set. La query verrà pertanto elaborata come "IE online community" o "IE 9 online community".The query will therefore be processed as "IE online community" or "IE 9 online community".

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

eand

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

Struttura XML dell'impostazione dei segni diacriticiXML structure of the diacritics setting

L'impostazione dei segni diacritici di un thesaurus è specificata in un singolo elemento <diacritics_sensitive>,The diacritics setting of a thesaurus is specified in a single <diacritics_sensitive> element. che contiene un valore intero che determina il supporto della distinzione tra caratteri accentati e non accentati, come indicato di seguito:This element contains an integer value that controls accent sensitivity, as follows:

Impostazione dei segni diacriticiDiacritics Setting ValoreValue XMLXML
non supportano la distinzione tra caratteri accentati e non accentatiAccent insensitive 00 <diacritics_sensitive>0</diacritics_sensitive>
supportano la distinzione tra caratteri accentati e non accentatiAccent sensitive 11 <diacritics_sensitive>1</diacritics_sensitive>
Nota

Questa impostazione può essere applicata solo una volta nel file e si applica a tutti i criteri di ricerca nel file.This setting can only be applied one time in the file, and it applies to all search patterns in the file. L'impostazione non può essere specificata per singoli criteri.This setting cannot be specified for individual patterns.

Modificare un file del thesaurus Edit a thesaurus file

È possibile configurare il thesaurus per una lingua specifica modificando il relativo file XML.You can configure the thesaurus for a given language by editing its thesaurus file (an XML file). Durante la configurazione vengono installati file del thesaurus vuoti che contengono solo il contenitore <xml> e un elemento <thesaurus di esempio impostato come commento.During setup, empty thesaurus files that contain only the <xml> container and a commented-out sample <thesaurus> element are installed. Ai fini della corretta esecuzione delle query di ricerca full-text per la ricerca di sinonimi, è necessario creare un elemento <thesaurus> effettivo che definisca un set di sinonimi.In order for full-text search queries that look for synonyms to work properly, you have to create an actual <thesaurus> element that defines a set of synonyms. È possibile definire due forme di sinonimi, i set di espansione e i set di sostituzione.You can define two forms of synonyms, expansion sets and replacement sets.

Modificare un file del thesaurusEdit a thesaurus file

  1. Aprire il file del thesaurus nel Blocco note o in un altro editor di testo.Open the thesaurus file in Notepad or another text editor.

  2. Se si modifica un file del thesaurus per la prima volta, rimuovere le righe di commento seguenti all'inizio e alla fine del file, rispettivamente:If you are editing the thesaurus file for the first time, remove the following comment lines at the beginning and end of the file, respectively:

    <!--Commented out  
    -->  
    
  3. Aggiungere, modificare o eliminare un set di sostituzione o un set di espansione.Add, modify, or delete a replacement set or an expansion set.

  4. Salvare il file e chiudere il Blocco note.Save the file and close Notepad.

  5. Utilizzare sp_fulltext_load_thesaurus_file per caricare il contenuto del file del thesaurus in tempdb, specificando l'identificatore LCID corrispondente alla lingua del file del thesaurus.Use sp_fulltext_load_thesaurus_file to load the content of the thesaurus file into tempdb, specifying the local identifier (LCID) that corresponds to the language of the thesaurus file. Per il file del thesaurus per la lingua inglese, denominato tsenu.xml, l'identificatore LCID corrispondente è 1033.For example, for the English thesaurus file, tsenu.xml, the corresponding LCID is 1033.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

Indicazioni per la modifica dei file del thesaurusRecommendations for editing thesaurus files

È consigliabile che le voci del file del thesaurus non contengano caratteri speciali,We recommend that entries in the thesaurus file contain no special characters. in quanto i word breaker rivelano comportamenti imprevedibili in presenza di tale tipo di caratteri.This is because word breakers have subtle behaviors with respect to special characters. Se una voce del thesaurus contiene un carattere speciale, i word breaker usati in combinazione con la voce possono avere un comportamento imprevisto con implicazioni su una query full-text.If a thesaurus entry contains any special characters, word breakers used in combination with that entry can have subtle behavioral implications for a full-text query.

È consigliabile che le voci <sub> non contengano parole non significative, in quanto tali parole vengono omesse dall'indice full-text.We recommend that <sub> entries contain no stopwords since stopwords are omitted from the full-text index. Le query vengono espanse per includere le voci <sub> da un file del thesaurus e se una voce <sub> contiene parole non significative, le dimensioni della query aumentano inutilmente.Queries are expanded to include the <sub> entries from a thesaurus file, and if a <sub> entry contains stopwords, query size increases unnecessarily.

Limitazioni per la modifica dei file del thesaurusRestrictions for editing thesaurus files

Alla modifica di un file del thesaurus si applicano le restrizioni seguenti:The following restrictions apply to editing a thesaurus file:

  • Solo gli amministratori di sistema possono aggiornare, modificare o eliminare i file del thesaurus.Only system administrators can update, modify, or delete thesaurus files.

  • Quando si usano editor di testo per modificare i file del thesaurus, è necessario salvare i file in formato Unicode e specificare gli indicatori per l'ordine dei byte (BOM).When editing thesaurus files using text editor tools, the files must be saved in Unicode format, and Byte Order Marks must be specified.

  • Le voci del thesaurus non possono essere vuote e non è possibile eseguirne il word breaking in una stringa vuota.Thesaurus entries cannot be empty or word break to an empty string.

  • Le frasi nel file del thesaurus non devono essere costituite da più di 512 caratteri.Phrases in the thesaurus file must be no longer than 512 characters.

  • Un thesaurus non deve contenere alcuna voce duplicata fra le voci <sub> dei set di espansione e gli elementi <pat> dei set di sostituzione.A thesaurus must not contain any duplicate entries among the <sub> entries of expansion sets and the <pat> elements of replacement sets.

Vedere ancheSee Also

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