Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In SQL Server, le query full-text possono cercare sinonimi di termini specificati dall'utente tramite l'uso di un thesaurus. Un SQL Server thesaurus definisce un set di sinonimi per una lingua specifica. Gli amministratori di sistema possono definire due forme di sinonimi, i set di espansione e i set di sostituzione. Sviluppando un thesaurus basato sui dati full-text in uso, è possibile ampliare in modo efficace l'ambito delle query full-text su tali dati. 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.
Attività di base per la configurazione di un file del thesaurus
Prima che le query di ricerca full-text nell'istanza del server siano in grado di eseguire la ricerca di sinonimi in una determinata lingua, è necessario definire mapping del thesaurus (sinonimi) per tale lingua. È necessario configurare manualmente ogni thesaurus per definire gli elementi seguenti:
Impostazione dei segni diacritici
Per un determinato thesaurus, tutti i modelli di ricerca sono sensibili o insensibili a segni diacritici, ad esempio una tilde (), un segno di accento acuto (??) o umlaut (~??) Ovvero, distinzione tra accenti e accenti insensibili. Si supponga, ad esempio, di specificare il modello "caf??" da sostituire con altri modelli in una query full-text. Se il thesaurus è insensibile, la ricerca full-text sostituisce i modelli "caf??" e "café". Se il thesaurus è sensibile al accento, la ricerca full-text sostituisce solo il modello "caf??". Per impostazione predefinita, un thesaurus non supporta la distinzione tra caratteri accentati e non accentati.
Set di espansione
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. 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.
Per altre informazioni, vedere "Struttura XML di un set di espansione" più avanti in questo argomento.
Set di sostituzione
Un set di sostituzione include un criterio di testo da sostituire con parole specifiche. Vedere, ad esempio, la sezione "Struttura XML di un set di sostituzione" più avanti in questo argomento.
Contenuto iniziale dei file del thesaurus
SQL Server fornisce un set di file xml thesaurus, uno per ogni linguaggio supportato. Tali file sono essenzialmente vuoti Contengono solo la struttura XML di primo livello comune a tutti i SQL Server thesaurus e un thesaurus con commento.
I file thesaurus rilasciati con SQL Server contengono tutto il codice XML seguente:
<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>
Percorso dei file del thesaurus
Il percorso predefinito dei file del thesaurus è il seguente:
<>SQL_Server_data_files_path\MSSQL12. MSSQLSERVER\MSSQL\FTDATA\
Tale percorso predefinito contiene i file seguenti:
File del thesaurus specifici della lingua
Durante l'installazione, nel percorso indicato in precedenza vengono installati file del thesaurus vuoti, uno per ogni lingua supportata. Tali file possono essere personalizzati da un amministratore di sistema.
Per i nomi predefiniti dei file del thesaurus viene usato il formato seguente:
'ts' + <abbreviazione> di lingua a tre lettere + '.xml'
Il nome del file thesaurus per una determinata lingua viene specificato nel Registro di sistema nel valore seguente HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\MSSearch\.
File del thesaurus globale
File del thesaurus globale vuoto denominato tsGlobal.xml.
È possibile modificare il percorso e il nome di un file del thesaurus modificando la relativa chiave del Registro di sistema. Per ogni lingua, il percorso del file del thesaurus viene specificato nel seguente valore del Registro di sistema:
HKLM/SOFTWARE/Microsoft/Microsoft SQL Server</nome> istanza/MSSearch/Language</Language-abbreviation>/TsaurusFile
Il file del thesaurus globale corrisponde alla lingua neutra con LCID 0. Questo valore può essere modificato solo dagli amministratori.
Modalità di utilizzo dei file del thesaurus nelle query
Una query sul thesaurus usano sia un thesaurus specifico della lingua sia un thesaurus globale. 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. 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. Questi passaggi vengono quindi ripetuti per il thesaurus globale. 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.
Informazioni sulla struttura di un file del thesaurus
Ogni file del thesaurus definisce un contenitore XML, il cui ID è Microsoft Search Thesaurus
, e un commento <!--
... -->
che contiene un thesaurus di esempio. Il thesaurus è definito in un <elemento thesaurus> che contiene esempi degli elementi figlio che definiscono l'impostazione diacritica, i set di espansione e i set di sostituzione, come indicato di seguito:
Struttura XML dell'impostazione dei segni diacritici
L'impostazione diacritica di un thesaurus viene specificata in un singolo <elemento diacritics_sensitive> . che contiene un valore intero che determina il supporto della distinzione tra caratteri accentati e non accentati, come indicato di seguito:
Impostazione dei segni diacritici valore XML non supportano la distinzione tra caratteri accentati e non accentati 0 <diacritics_sensitive>0</diacritics_sensitive>
supportano la distinzione tra caratteri accentati e non accentati 1 <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. L'impostazione non può essere specificata per singoli criteri.
Struttura XML di un set di espansione
Ogni set di espansione è racchiuso in un <elemento di espansione> . All'interno di questo elemento, specificare una o più sostituzioni in un <elemento secondario> . Nel set di espansione è possibile specificare un gruppo di sostituzioni che sono sinonimi una dell'altra.
Ad esempio, è possibile modificare la sezione di espansione per considerare le sostituzioni "writer", "author" e "journalist" come sinonimi. 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. 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".
La sezione del set di espansione dell'esempio precedente sarà la seguente:
<expansion> <sub>writer</sub> <sub>author</sub> <sub>journalist</sub> </expansion>
Struttura XML di un set di sostituzione
Ogni set di sostituzione è racchiuso in un <elemento sostitutivo> . All'interno di questo elemento è possibile specificare uno o più modelli in un <elemento pat> e zero o più sostituzioni in <sotto> elementi, uno per sinonimo. È possibile specificare un criterio da sostituire con un set di sostituzione. I criteri e le sostituzioni possono contenere una parola o una sequenza di parole. Se non viene specificata alcuna sostituzione per un criterio, questo verrà rimosso dalla query dell'utente.
Si supponga, ad esempio, di voler eseguire query per sostituire il criterio "Win8" con "Windows Server 2012" o "Windows 8.0". 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". ma non quelli contenenti "Win8". Questo accade perché "Win8" è stato "sostituito" con "Windows Server 2012" e "Windows 8.0".
La sezione del set di sostituzione dell'esempio sopra descritto sarebbe:
<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. 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". La query verrà pertanto elaborata come "IE online community" o "IE 9 online community".
<replacement> <pat>Internet</pat> <sub>intranet</sub> </replacement>
e
<replacement> <pat>Internet Explorer</pat> <sub>IE</sub> <sub>IE 9</sub> </replacement>
Utilizzo dei file del thesaurus
Per modificare un file del thesaurus
Per caricare un file del thesaurus aggiornato
Per visualizzare il risultato della suddivisione in token di una combinazione di word breaker, thesaurus ed elenchi di parole non significative
Modifica di un file del thesaurus
È possibile configurare il thesaurus per una lingua specifica modificando il relativo file XML. Durante l'installazione, vengono installati solo i file del thesaurus che contengono solo il <contenitore xml> e un elemento thesaurus> con commento<. Per consentire alle query di ricerca full-text che cercano sinonimi di funzionare correttamente, è necessario creare un elemento thesaurus> effettivo <che definisce un set di sinonimi. È possibile definire due forme di sinonimi, i set di espansione e i set di sostituzione.
Restrizioni relative ai file del thesaurus
Alla modifica di un file del thesaurus si applicano le restrizioni seguenti:
Solo gli amministratori di sistema possono aggiornare, modificare o eliminare i file del thesaurus.
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).
Le voci del thesaurus non possono essere vuote e non è possibile eseguirne il word breaking in una stringa vuota.
Le frasi nel file del thesaurus non devono essere costituite da più di 512 caratteri.
Un thesaurus non deve contenere voci duplicate tra le <> sotto voci dei set di espansione e gli <elementi pat> dei set di sostituzione.
Indicazioni per i file del thesaurus
È consigliabile che le voci del file del thesaurus non contengano caratteri speciali, in quanto i word breaker rivelano comportamenti imprevedibili in presenza di tale tipo di caratteri. 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.
È consigliabile che <le sotto> voci non contengano parole non significative perché le parole non vengono omesse dall'indice full-text. Le query vengono espanse per includere le sotto voci di un file del thesaurus e se una <voce secondaria> contiene parole non significative, le <> dimensioni della query aumentano inutilmente.
Per modificare un file del thesaurus
Aprire il file del thesaurus nel Blocco note.
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:
<!--Commented out -->
Aggiungere, modificare o eliminare un set di sostituzione o set di espansione.
Salvare il file e chiudere il Blocco note.
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. Per il file del thesaurus per la lingua inglese, denominato tsenu.xml, l'identificatore LCID corrispondente è 1033.
USE AdventureWorks2012 ; EXEC sys.sp_fulltext_load_thesaurus_file 1033; GO
Vedere anche
CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
Ricerca full-text