Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare le funzionalità più recenti, gli aggiornamenti della sicurezza e il supporto tecnico.
Si applica a:SQL Server
Le query di ricerca full-text di SQL Server consentono la ricerca di sinonimi di termini specificati dall'utente tramite un thesaurus di ricerca full-text. Ogni theasurus definisce un set di sinonimi per una lingua specifica. 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
.
Un thesaurus di ricerca full-text è un file di testo XML.
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. È necessario configurare manualmente ogni thesaurus per definire gli elementi seguenti:
Set di espansione
Un insieme di espansione contiene un gruppo di sinonimi, come "scrittore", "autore" e "giornalista", che vengono sostituiti l'uno con l'altro tramite una query testuale completa. 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 contiene un modello di testo da sostituire con un altro set di sostituzione. Vedere, ad esempio, la sezione Struttura XML di un set di sostituzione più avanti in questo argomento.
Impostazione dei segni diacritici
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. Supponiamo ad esempio che tu specifichi il modello "café" da sostituire con altri modelli in una query di testo completo. Se il thesaurus non distingue tra caratteri accentati e non accentati, la ricerca full-text sostituirà i termini "café" e "cafe". Se il thesaurus è sensibile agli accenti, la ricerca full-text sostituisce solo il pattern "café". Per impostazione predefinita, un thesaurus non supporta la distinzione tra caratteri accentati e non accentati.
SQL Server offre un set di file XML del thesaurus, uno per ogni lingua supportata. Tali file sono essenzialmente vuoti e contengono solo la struttura XML di livello principale comune a tutti i thesaurus di SQL Server e un thesaurus di esempio costituito da commenti.
Il percorso predefinito dei file del thesaurus è il seguente:
<SQL_Server_data_files_path>\MSSQL13.MSSQLSERVER\MSSQL\FTDATA\
Tale percorso predefinito contiene i file seguenti:
File del thesaurus specifici della lingua
Il programma di installazione installa file vuoti del dizionario dei sinonimi nella posizione sopra indicata. Un file separato è fornito 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' + <three-letter language-abbreviation> + '.xml'
Il nome del file del thesaurus per ogni lingua viene specificato nel valore seguente del Registro di sistema:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>
Il file del thesaurus globale
File thesaurus globale vuoto chiamato 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\<instance name>\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.
Una query sul thesaurus utilizza sia un thesaurus specifico della lingua sia uno globale.
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>
contenente esempi degli elementi figlio che definiscono l'impostazione dei segni diacritici, i set di espansione e i set di sostituzione.
Un file del thesaurus vuoto tipico contiene gli elementi XML seguenti:
<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>
Ogni set di espansione è racchiuso in un elemento <expansion>
. All'interno di questo elemento è possibile specificare una o più sostituzioni in un elemento <sub>
. 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. Le query di ricerca full-text che contengono corrispondenze in una sostituzione vengono ampliate per includere tutte le altre sostituzioni specificate nel set di espansione. 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>
Ogni set di sostituzione è racchiuso in un elemento <replacement>
. 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. È possibile specificare un modello da sostituire con un insieme di sostituzione. I criteri e le sostituzioni possono contenere una parola o una sequenza di parole. Se non viene specificata alcuna sostituzione per un pattern, questo ha l'effetto di rimuovere il pattern dalla query dell'utente.
Si supponga, ad esempio, di voler sostituire nelle query il modello "Win8" con "Windows Server 2012" o "Windows 8.0". Se si esegue una query full-text per "Win8", verranno restituiti solo i risultati della ricerca full-text contenenti "Windows Server 2012" o "Windows 8.0". Non restituisce risultati contenenti "Win8". Questo accade perché "Win8" è stato "sostituito" con "Windows Server 2012" e "Windows 8.0".
Ecco come apparirebbe la sezione del set di sostituzione per l'esempio sopra:
<replacement>
<pat>Win8</pat>
<sub>Windows Server 2012</sub>
<sub>Windows 8.0</sub>
</replacement>
Se sono presenti due set di sostituzione con schemi simili, 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>
L'impostazione dei segni diacritici di un thesaurus è specificata in un singolo elemento <diacritics_sensitive>
, questo elemento contiene un valore intero che controlla la sensibilità agli accenti, come segue:
Impostazione dei segni diacritici | Valore | XML |
---|---|---|
Insensibile agli accenti | 0 | <diacritics_sensitive>0</diacritics_sensitive> |
Sensibile agli accenti | 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 modelli.
È possibile configurare il thesaurus per una lingua specifica modificando il relativo file XML. Durante la configurazione, vengono installati file del thesaurus vuoti che contengono solo il contenitore <xml>
e un elemento <thesaurus
> di esempio impostato come commento. 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. È possibile definire due forme di sinonimi, i set di espansione e i set di sostituzione.
Aprire il file del thesaurus nel Blocco note o in un altro editor di testo.
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 un set di espansione.
Salva il file e chiudi 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 AdventureWorks;
EXEC sys.sp_fulltext_load_thesaurus_file 1033;
GO
Si consiglia che le voci nel 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 dei caratteri speciali, i word breaker usati in combinazione con quella voce possono avere implicazioni comportamentali sottili per una query full-text.
È consigliabile che le voci <sub>
non contengano parole non significative, in quanto tali parole vengono omesse dall'indice full-text. La query viene espansa per includere le voci <sub>
di un dizionario dei sinonimi e se una voce <sub>
contiene parole non significative, la dimensione della query aumenta inutilmente.
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 o divise in una stringa vuota.
Le frasi nel file del thesaurus non devono essere costituite da più di 512 caratteri.
Un thesaurus non deve contenere alcuna voce duplicata fra le voci <sub>
dei set di espansione e gli elementi <pat>
dei set di sostituzione.
CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
sp_fulltext_load_thesaurus_file (Transact-SQL)
sys.dm_fts_parser (Transact-SQL)
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiTraining
Modulo
Gestire una soluzione di Azure AI Search - Training
Mantenere le prestazioni, i costi e l'affidabilità delle soluzioni di Azure AI Search.
Documentazione
Configurare e gestire word breaker e stemmer per la ricerca - SQL Server
Configura e gestisci word breaker e stemmer per la ricerca (SQL Server)
sys.dm_fts_parser (Transact-SQL) - SQL Server
Restituisce il risultato finale della tokenizzazione dopo l'applicazione di un word breaker specificato.
Configurare e gestire filtri per la ricerca - SQL Server
Configurare e gestire filtri per la ricerca