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 questo argomento viene descritto come Windows Search supporta più lingue.
Tokenizzazione, wordbreaker e risorse del linguaggio
Windows Search è indipendente dalla lingua, ma l'accuratezza della ricerca tra le lingue può variare a causa del modo in cui i wordbreaker tokenzzano il testo. I wordbreaker implementano varie regole di tokenizzazione per le lingue e suddivideno il testo in singoli token, o parole, da indicizzare o cercare.
Sia la lingua del testo indicizzato che la stringa di query sono suddivise in token. Poiché le regole di tokenizzazione variano in base alla lingua, esistono word breaker separati per ogni lingua o famiglia di lingue. Se esiste una mancata corrispondenza tra il linguaggio di query e il linguaggio indicizzato, i risultati possono essere imprevedibili.
Windows Search viene fornito con un set ben definito di wordbreaker. I componenti classici wordbreaker e stemmer sono supportati in Windows Vista e versioni successive. Se non è possibile determinare la lingua di un documento, Windows Search tenta di rilevare la lingua per identificare il word breaker più appropriato. Windows Search tenta di rilevare la lingua chiamando la funzione GetSystemPreferredUILanguages per determinare la prima lingua MUI (Multiple User Interface), che in genere è la lingua dell'interfaccia utente di sistema, a meno che non siano installati Language Pack MUI. Se la chiamata ha esito positivo, viene usato il wordbreaker per la prima lingua MUI. Se la chiamata a GetSystemPreferredUILanguages ha esito negativo, Windows Search recupera le impostazioni locali di sistema chiamando la funzione GetSystemDefaultLCID e usa il wordbreaker associato a tale impostazione locale.
Se non viene installato alcun wordbreaker per una lingua, Windows Search interrompe lo spazio vuoto usando il Neutral wordbreaker.
È possibile rimuovere una lingua tramite il Registro di sistema, come illustrato nell'esempio seguente.
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
ContentIndex
Language
Dutch_Dutch
(Default)
Locale
NoiseFile
StemmerClass = CLSID
WBreakerClass = CLSID
Mancia
Se si apportano modifiche al Registro di sistema, riavviare Windows Search.
Quando Windows Search richiede un nuovo wordbreaker, l'identificatore di classe (CLSID) viene letto e viene memorizzato nella cache il wordbreaker di cui è stata creata un'istanza.
È possibile creare un wordbreaker personalizzato per un linguaggio implementando l'interfacciaIWordBreaker. Windows Search chiama quindi i metodi IWordBreaker quando compila indici di contenuto ed esegue query.
Le informazioni sulle impostazioni locali per il contenuto indicizzato vengono recuperate dall'origine del contenuto. Se l'implementatore di origine non conosce le impostazioni locali del contenuto indicizzato, deve impostare le impostazioni locali su LOCALE_NEUTRAL.
Se, ad esempio, si implementa un gestore di filtri (un'implementazione dell'interfacciaIFilter), il gestore di proprietà o il gestore del protocollo, è necessario impostare le impostazioni locali per il contenuto indicizzato su LOCALE_NEUTRAL a meno che non si disponga di informazioni sulle impostazioni locali specifiche e di essere certi della sua accuratezza.
Mancia
Se una query sull'indice è basata sull'input dell'utente, le impostazioni locali devono corrispondere alla lingua in cui l'utente sta digitando. È possibile determinare queste impostazioni locali chiamando la funzioneGetKeyboardLayout.
Lingue supportate dai wordbreaker
Windows Search include wordbreaker per supportare le lingue seguenti.
| Chiave del Registro di sistema | Lingua (sottolanguage) | LCID |
|---|---|---|
| Arabic_SaudiArabia | Arabo (neutro) | 0x0001 |
| Bengali_Default | Bangla (neutrale) | 0x0045 |
| Bulgarian_Default | Bulgaro (Bulgaria) | 0x0402 |
| Catalan_Default | Catalano (catalano) | 0x0403 |
| Chinese_HongKong | Cinese (HONG KONG SAR, PRC) | 0x0C04 |
| Chinese_Simplified | Cinese (semplificato) | 0x0804 |
| Chinese_Traditional | Cinese (tradizionale) | 0x0404 |
| Croatian_Default | Croato (Croazia) | 0x041A |
| Czech_Default | Ceco (Repubblica Ceca) | 0x0405 |
| Danish_Default | Danese (Danimarca) | 0x0406 |
| Dutch_Dutch | Olandese (Paesi Bassi) | 0x0413 |
| English_UK | Inglese (Regno Unito) | 0x0809 |
| English_US | Inglese (Stati Uniti) | 0x0409 |
| Finnish_Default | Finlandese (Finlandia) | 0x040B |
| French_French | Francese (Francia) | 0x040C |
| German_German | Tedesco (Germania) | 0x0407 |
| Greek_Default | Greco (Grecia) | 0x0408 |
| Gujarati_Default | Gujarati (India) | 0x0447 |
| Hebrew_Default | Ebraico (neutro) | 0x000D |
| Hindi_Default | Hindi (India) | 0x0439 |
| Hungarian_Default | Ungherese (Ungheria) | 0x040E |
| Icelandic_Default | Islandese (Islanda) | 0x040F |
| Indonesian_Default | Indonesiano (Indonesia) | 0x0421 |
| Italian_Italian | Italiano (Italia) | 0x0410 |
| Japanese_Default | Giapponese (Giappone) | 0x0411 |
| Kannada_Default | Kannada (India) | 0x044B |
| Korean_Default | Coreano (Corea) | 0x0412 |
| Latvian_Default | Lettone (Lettonia) | 0x0426 |
| Lithuanian_Default | Lituano (lituano) | 0x0427 |
| Malay_Malaysia | Malese (Malesia) | 0x043E |
| Malayalam_Default | Malayalam (neutrale) | 0x004C |
| Marathi_Default | Marathi (India) | 0x044E |
| Norwegian_Bokmal | Norvegese (Bokmål, Norvegia) | 0x0414 |
| Polish_Default | Polacco (Polonia) | 0x0415 |
| Portuguese_Portugal | Portoghese (Portogallo) | 0x0816 |
| Portuguese_Brazil | Portoghese (Brasile) | 0x0416 |
| Punjabi_Default | Punjabi (India) | 0x0446 |
| Romanian_Default | Romeno (Romania) | 0x0418 |
| Russian_Default | Russo (neutro) | 0x0019 |
| Serbian_Cyrillic | Serbo (Serbia e Montenegro, ex, cirillico) | 0x0C1A |
| Serbian_Latin | Serbo (Serbia e Montenegro, ex latino) | 0x081A |
| Slovak_Default | Slovacco (Slovacchia) | 0x041B |
| Slovenian_Default | Sloveno (Slovenia) | 0x0424 |
| Spanish_Modern | Spagnolo (Spagna, Ordinamento moderno) | 0x0C0A |
| Swedish_Default | Svedese (Svezia) | 0x041D |
| Tamil_Default | Tamil (India) | 0x0449 |
| Telugu_Default | Telugu (India) | 0x044A |
| Thai_Default | Thai (Thailandia) | 0x041E |
| Turkish_Default | Turco (Türkiye) | 0x041F |
| Ukrainian_Default | Ucraino (Ucraina) | 0x0422 |
| Urdu_Default | Urdu (Pakistan) | 0x0420 |
| Vietnamese_Default | Vietnamita (Vietnam) | 0x042A |
Nota
Gli identificatori LCID per alcune lingue della tabella vengono generati usando l'identificatore di lingua, l'identificatore di sottolanguage e l'identificatore di ordinamento.
Per altre informazioni sulle lingue e sugli identificatori associati, vedere costanti e stringhe identificatore di lingua.
Nota
Non c'è alcuna garanzia che tutte queste chiavi del Registro di sistema di linguaggio saranno presenti in qualsiasi computer specifico. Il wordbreaker per una determinata lingua può essere installato o meno nel computer a seconda delle impostazioni utente.
A partire da Windows 8.1, il modo preferito per usare wordbreakers è tramite l'API WinRT la classe WordsSegmenter.
Risorse aggiuntive
- Per informazioni su come implementare e usare word breaker e stemmer personalizzati per lingue e impostazioni locali aggiuntive, vedere Estensione delle risorse della lingua in Windows Search.
- Se è necessario identificare la lingua di una parte di testo, è possibile usare rilevamento automatico lingua (LAD), disponibile in Windows 7 e versioni successive. Per altre informazioni, vedere servizi linguistici estesi (ELS).
- Per informazioni sulla gestione, l'esecuzione di query e l'estensione dell'indice, vedere la guida per sviluppatori di Windows Search .
Argomenti correlati
-
Uso di codice gestito con dati della shell e di Windows Search