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.
Si applica a:SQL Server
Database SQL di Azure
Word breaker e stemmer eseguono l'analisi linguistica su tutti i dati con indicizzazione full-text. L'analisi linguistica esegue le due operazioni seguenti:
Trovare i confini delle parole (word-breaking). Lo word breaker identifica singole parole determinando i delimitatori di parola in base alle regole lessicali della lingua. Ogni parola (anche nota come token) viene inserita nell'indice full-text utilizzando una rappresentazione compressa per ridurne le sue dimensioni.
Coniugare i verbi (stemming). Lo stemmer genera forme flessive di una particolare parola in base alle regole di quella lingua, ad esempio "running", "ran" e "runner" sono varie forme della parola "run".
I word breaker e gli stemmer sono specifici della lingua
Word breaker e stemmer sono specifici della lingua e le regole per l'analisi linguistica variano a seconda della lingua. L'uso di word breaker specifici di ogni lingua consente una maggiore accuratezza dei termini risultanti per le diverse lingue.
Per usare i segmentatori di parole e i lemmatizzatori forniti per tutte le lingue supportate da SQL Server, in genere non è necessario intraprendere alcuna azione.
Dove c'è un word breaker per la famiglia di lingue, ma non per la sottolingua specifica, viene usata la lingua principale. Il word breaker francese viene ad esempio utilizzato anche per la gestione di testo redatto in francese canadese.
Se per una particolare lingua non sono disponibili word breaker, verrà utilizzato il word breaker della lingua neutra. Con il separatore di parole neutro, le parole vengono spezzate in corrispondenza di caratteri neutri, ad esempio spazi e segni di punteggiatura.
Ottenere l'elenco delle lingue supportate
Per visualizzare l'elenco delle lingue supportate dalla ricerca full-text di SQL Server, usa l'istruzione Transact-SQL seguente. La presenza di una lingua nell'elenco indica che sono registrati spezzaparole per tale lingua.
SELECT *
FROM sys.fulltext_languages;
Ottenere l'elenco dei word breaker registrati
Per potere usare i word breaker di una determinata lingua per la ricerca full-text, è necessario registrarli. Per i word breaker registrati, anche le risorse linguistiche associate, ovvero stemmer, parole vuote (stopwords) e file di thesaurus, diventano disponibili per le operazioni di indicizzazione e query full-text.
Per visualizzare l'elenco dei componenti word breaker registrati, usare l'istruzione seguente.
EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO
Per altre informazioni, vedere sp_help_fulltext_system_components.
Se aggiungi o rimuovi un segmentatore di parole
Se si aggiunge, rimuove o modifica un segmentatore di parole, è necessario aggiornare l'elenco degli identificatori locali (LCID) di Microsoft Windows supportati per l'indicizzazione e le query full-text. Per altre informazioni, vedere Visualizzare o modificare i filtri registrati e i word breaker.
Impostare l'opzione della lingua full-text predefinita
Per le versioni localizzate di SQL Server, il programma di installazione di SQL Server imposta l'opzione default full-text language sulla lingua del server, se esiste una corrispondenza appropriata. Per le versioni non localizzate di SQL Server, l'opzione default full-text language è impostata sull'inglese.
Quando si crea o modifica un indice full-text, è possibile specificare una lingua diversa per ogni colonna di indicizzazione full-text. Se per una colonna non è stata specificata alcuna lingua, il valore predefinito è quello dell'opzione di configurazione default full-text language.
Nota
È necessario che a tutte le colonne elencate in una singola clausola di funzione per query full-text venga applicata la stessa lingua, a meno che nella query l'opzione LANGUAGE non sia specificata. La lingua utilizzata per la colonna indicizzata full-text oggetto della query determina l'analisi linguistica eseguita sugli argomenti dei predicati (CONTAINS e FREETEXT) e delle funzioni (CONTAINSTABLE e FREETEXTTABLE) delle query full-text.
Scegliere la lingua per una colonna indicizzata
Quando si crea un indice full-text, è consigliabile specificare una lingua per ogni colonna indicizzata. Se non viene specificata una lingua per una colonna, viene usata la lingua predefinita del sistema. La lingua di una colonna determina il word breaker e lo stemmer utilizzati per l'indicizzazione di quella colonna. Inoltre, il file del thesaurus della lingua specifica viene usato dalle query full-text sulla colonna.
Quando si crea un indice full-text, è necessario considerare alcuni aspetti relativi alla scelta della lingua delle colonne. Tali considerazioni riguardano il modo in cui il testo viene suddiviso in token e quindi indicizzato dal motore di ricerca full-text. Per altre informazioni, vedere Scelta di una lingua durante la creazione di un indice full-text.
Per visualizzare la lingua del word breaker di colonne specifiche, eseguire l'istruzione seguente.
SELECT language_id AS 'LCID'
FROM sys.fulltext_index_columns;
Per altre informazioni, vedere sys.fulltext_index_columns.
Risolvere gli errori di timeout di suddivisione delle parole
Un errore di timeout di interruzione delle parole può verificarsi in varie situazioni. Per informazioni su queste situazioni e su come rispondere in ogni situazione, vedere MSSQLSERVER_30053.
Informazioni sull'errore MSSQLSERVER_30053
Proprietà | valore |
---|---|
Nome prodotto | SQL Server |
ID evento | 30053 |
L'origine dell'evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbolico | FTXT_QUERY_E_WORDBREAKINGTIMEOUT (Timeout di interruzione delle parole) |
Testo del messaggio | Timeout per l'analisi dei termini nella stringa di query full-text. Questo problema può verificarsi se il word breaker impiega molto tempo per elaborare la stringa di query full-text o se è in esecuzione un numero elevato di query nel server. Prova a eseguire nuovamente la query con un carico più leggero. |
Spiegazione
Un errore di timeout dovuto all'interruzione del testo può verificarsi nelle situazioni seguenti:
Il word breaker per il linguaggio di query non è configurato correttamente. Le impostazioni del Registro di sistema, ad esempio, non sono corrette.
Il malfunzionamento del word breaker è dovuto a una stringa di query specifica.
Il word breaker restituisce troppi dati per una stringa di query specifica. I dati in eccesso sono considerati un potenziale attacco con sovraccarico del buffer e di conseguenza viene arrestato il processo del daemon di filtri (fdhost.exe) che ospita i servizi di word breaking.
La configurazione del processo del daemon di filtri non è corretta.
I problemi di configurazione più comuni sono rappresentati dalla scadenza della password o da criteri del dominio che impediscono l'accesso dell'account del daemon di filtri.
Un carico di lavoro di query molto elevato è in esecuzione nell'istanza server. Ad esempio, il word breaker impiega molto tempo per elaborare la stringa della query full-text o un numero elevato di query sono in esecuzione nel server. Questa è la causa meno probabile.
Azione utente
Selezionare l'azione dell'utente adatta alla probabile causa del timeout, come segue:
Probabile causa | Azione utente |
---|---|
Il word breaker per il linguaggio di query non è configurato correttamente. | Se si usa un word breaker di terze parti, potrebbe non essere registrato correttamente con il sistema operativo. In questo caso, registrare nuovamente il word breaker. Per altre informazioni, vedere Ripristinare i word breaker utilizzati da Ricerca alla versione precedente (Ricerca SQL Server). |
Il malfunzionamento del word breaker è dovuto a una stringa di query specifica. | Se il word breaker è supportato da SQL Server, contatta il Supporto tecnico Microsoft. |
Il word breaker restituisce troppi dati per una stringa di query specifica. | Se il word breaker è supportato da SQL Server, contatta il Supporto tecnico Microsoft. |
La configurazione del processo del daemon di filtri non è corretta. | Assicurarsi di usare la password corrente e che un criterio di dominio non impedisca l'accesso all'account del daemon di filtri. |
Nell'istanza del server è in esecuzione un carico di lavoro molto elevato di query. | Prova a eseguire nuovamente la query con un carico più leggero. |
Comprendere l'impatto dei word breaker aggiornati
Ogni versione di SQL Server include in genere nuovi word breaker con regole linguistiche migliori e maggiore accuratezza rispetto alle versioni precedenti. Potenzialmente, i nuovi word breaker potrebbero comportarsi in modo diverso rispetto ai word breaker negli indici full-text importati dalle versioni precedenti di SQL Server.
Questo aspetto è rilevante se si importa un catalogo full-text al momento dell'aggiornamento di un database alla versione corrente di SQL Server. Una o più lingue utilizzate dagli indici full-text nel catalogo full-text potrebbero ora essere associate a nuovi analizzatori di parole. Per altre informazioni, vedere Aggiornamento della ricerca a testo completo.