Word breaker e stemmer
Word breaker e stemmer eseguono l'analisi linguistica su tutti i dati con indicizzazione full-text. L'analisi linguistica riguarda la ricerca dell'inizio e della fine delle parole (isolamento delle parole) e la coniugazione dei verbi (flessione). Word breaker e stemmer sono specifici della lingua e le regole per l'analisi linguistica variano a seconda della lingua. Un word breaker identifica singole parole determinando i delimitatori di parola in base alle regole lessicali della lingua. Ogni parola (token) viene inserita nell'indice full-text utilizzando una rappresentazione compressa per ridurre le relative dimensioni. 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".
L'utilizzo di word breaker specifici di ogni lingua consente una maggiore accuratezza dei termini risultanti per le diverse lingue. Se è disponibile un word breaker per la famiglia linguistica, ma non per una specifica lingua secondaria, viene utilizzata 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 word breaker della lingua neutra, le parole vengono spezzate in corrispondenza di caratteri neutri, ad esempio spazi e segni di punteggiatura.
Registrazione dei word breaker
Per potere utilizzare i word breaker di una determinata lingua, è necessario registrarli. Per i word breaker registrati, anche le risorse linguistiche associate, ovvero stemmer, parole non significative e thesaurus, risultano disponibili per le operazioni di indicizzazione e query full-text. Per visualizzare un elenco delle lingue i cui word breaker sono attualmente registrati con SQL Server, utilizzare l'istruzione Transact-SQL seguente:
SELECT * FROM sys.fulltext_languages
Se si aggiunge, rimuove o modifica un word breaker, è necessario aggiornare l'elenco degli identificatori delle impostazioni locali (LCID) di Microsoft Windows supportati per l'indicizzazione e le query full-text. Per ulteriori informazioni, vedere Procedura: Modifica dell'elenco di word breaker e filtri registrati (Transact-SQL).
Con SQL Server 2008 vengono forniti numerosi word breaker con licenza di terze parti. È possibile caricare manualmente altri word breaker e stemmer di terze parti per diverse lingue (danese, polacco e turco). Tali word breaker non vengono abilitati per impostazione predefinita poiché sono di proprietà di terze parti che non hanno ancora fornito il livello di test, sicurezza e affidabilità necessario per consentirne l'abilitazione per impostazione predefinita. Per ulteriori informazioni, vedere Procedura: Caricamento di word breaker concessi in licenza di produttori di terze parti.
Opzione della lingua full-text
Per le versioni localizzate di SQL Server, l'opzione default full-text language viene impostata dal programma di installazione di SQL Server 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.
Per ulteriori informazioni, vedere Opzione 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.
Scelta di una lingua durante l'indicizzazione full-text di una colonna
Quando si crea un indice full-text, è consigliabile specificare una lingua per ogni colonna indicizzata. Se non viene specificata alcuna lingua per una colonna, viene utilizzata quella predefinita di sistema. La lingua di una colonna determina il word breaker e lo stemmer utilizzati per l'indicizzazione di quella colonna. Anche il file del thesaurus di quella lingua verrà utilizzato 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 ulteriori informazioni, vedere Procedure consigliate per la scelta di una lingua durante la creazione di un indice full-text.
Per visualizzare la lingua del word breaker di una colonna
sys.fulltext_index_columns (Transact SQL)
SELECT 'language_id' AS "LCID" FROM sys.fulltext_index_columns;
Influenza dei nuovi word breaker in SQL Server 2008
In SQL Server 2008 sono disponibili word breaker per più di 50 lingue, 23 dei quali sono inclusi anche in SQL Server 2005. Solo i word breaker per inglese, coreano, tailandese e cinese (tutti i tipi) restano invariati. Per altre lingue, in SQL Server 2008 viene introdotta una nuova generazione di word breaker con regole linguistiche migliori e maggiore accuratezza rispetto alle versioni precedenti. È possibile che il comportamento dei nuovi word breaker sia leggermente diverso da quello dei word breaker negli indici full-text SQL Server 2005 importati. Questo aspetto assume particolare significato se un catalogo full-text è stato importato durante l'aggiornamento di un database SQL Server 2005 a SQL Server 2008. Una o più lingue utilizzate dagli indici full-text nel catalogo full-text potrebbero essere associate ai nuovi word breaker. Per ulteriori informazioni, vedere Aggiornamento della ricerca full-text.
Versioni dei word breaker per le lingue supportate in SQL Server 2005
Solo i word breaker per inglese, coreano, tailandese e cinese (tutti i tipi) restano invariati. Nella tabella seguente sono elencati i word breaker disponibili in SQL Server 2005 e viene indicato se sono stati aggiornati in SQL Server 2008. Per un elenco completo di tutti i word breaker disponibili in SQL Server 2008, vedere sys.fulltext_languages (Transact-SQL).
Nota
Per impostazione predefinita, i word breaker per la maggior parte delle lingue sono registrati. Sempre per impostazione predefinita, tuttavia, diversi word breaker di terze parti concessi in licenza sono disabilitati. Per informazioni su queste lingue e sulla registrazione dei word breaker, vedere Procedura: Caricamento di word breaker concessi in licenza di produttori di terze parti.
Lingua |
LCID |
Word breaker |
---|---|---|
Brasiliano |
1046 |
Nuovo |
Cinese (Hong Kong R.A.S., RPC) |
3076 |
Non modificato |
Cinese (Macao) |
5124 |
Non modificato |
Cinese (Singapore) |
4100 |
Non modificato |
Danese (disabilitato per impostazione predefinita) |
1030 |
Non modificato |
Olandese |
1043 |
Nuovo |
Inglese |
1033 |
Non modificato |
Inglese (Regno Unito) |
2057 |
Non modificato |
Francese |
1036 |
Nuovo |
Tedesco |
1031 |
Nuovo |
Italiano |
1040 |
Nuovo |
Giapponese |
1041 |
Nuovo |
Coreano |
1042 |
Non modificato |
Lingua neutra |
0 |
Nuovo |
Polacco (disabilitato per impostazione predefinita) |
1045 |
Non modificato |
Portoghese |
2070 |
Nuovo |
Russo |
1049 |
Nuovo |
Cinese semplificato |
2052 |
Non modificato |
Spagnolo |
3082 |
Nuovo |
Svedese |
1053 |
Nuovo |
Tailandese |
1054 |
Non modificato |
Cinese tradizionale |
1028 |
Non modificato |
Turco (disabilitato per impostazione predefinita) |
1055 |
Non modificato |
Per un elenco completo delle lingue supportate, vedere sys.fulltext_languages (Transact-SQL).
Errori di timeout del word breaking
Un errore di timeout del word breaking potrebbe verificarsi in diverse situazioni. Per informazioni su queste situazioni e su come rispondere, vedere MSSQLSERVER_30053.
Per ottenere informazioni sui word breaker
Visualizzazione del risultato della suddivisione in token di una combinazione di word breaker, thesaurus ed elenco di parole non significative
Per restituire informazioni sui word breaker registrati
Vedere anche