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 e
Istanza gestita di 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 separatori di parole e gli stemmer forniti per tutte le lingue supportate da Motore di database di SQL Server, in genere non è necessario eseguire alcuna operazione.
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 vedere l'elenco dei linguaggi supportati da Full-Text Search, usa la seguente istruzione Transact-SQL. 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, le risorse linguistiche associate diventano disponibili anche per le operazioni di indicizzazione e interrogazione del testo completo. Queste risorse includono stemmer, parole di rumore (stopword) e file di thesaurus.
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 ulteriori informazioni, vedere Personalizzare filtri e separatori di parole.
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
Tutte le colonne elencate in una singola clausola della funzione di query full-text devono usare lo stesso linguaggio, a meno che non sia specificata l'opzione LANGUAGE nella query. 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 crei un indice a testo completo, specifica 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 maggiori informazioni, vedi Scegli una lingua quando crei un indice a testo completo.
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. Ad esempio, le impostazioni del registro sono errate.
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 vengono considerati come un potenziale attacco di buffer overrun e arrestano il processo del demone di filtro (
fdhost.exe), che ospita i servizi di suddivisione delle parole.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.
Nell'istanza del server è in esecuzione un carico di lavoro molto elevato di query. Ad esempio, il word breaker impiegava molto tempo per elaborare la stringa di query in testo, oppure un gran numero di query era in esecuzione sul 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 usati da Full-Text Ricerca alla versione precedente. |
| Il malfunzionamento del word breaker è dovuto a una stringa di query specifica. | Se il word breaker è supportato dal motore di database, contatta il Supporto tecnico Microsoft. |
| Il word breaker restituisce troppi dati per una stringa di query specifica. | Se il word breaker è supportato dal motore di database, 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 del motore di database può includere word breaker aggiornati con regole linguistiche riviste. Questi word breaker aggiornati potrebbero comportarsi diversamente rispetto ai word breaker negli indici full-text importati dalle versioni precedenti del motore di database.
Questo è significativo se un catalogo a testo completo è stato importato quando un database è stato aggiornato alla versione attuale del motore di database. 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.