Lingue supportate da Windows Search
In questo argomento viene descritto come Windows Search supporta più lingue.
Tokenizzazione, wordbreaker e risorse della lingua
Windows Search è indipendente dalla lingua, ma l'accuratezza della ricerca tra 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 interrompono il testo in singoli token, o parole, per l'indicizzazione o la ricerca.
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 wordbreaker 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 wordbreaker 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 il primo linguaggio 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 tali impostazioni locali.
Se non viene installato alcun wordbreaker per una lingua, Windows Search interrompe lo spazio vuoto usando il wordbreaker Neutral .
È 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
Suggerimento
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'interfaccia IWordBreaker . 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.
Ad esempio, se si implementa un gestore di filtri (un'implementazione dell'interfaccia IFilter ), 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 si sia certi della relativa accuratezza.
Suggerimento
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 funzione GetKeyboardLayout .
Lingue supportate da Wordbreakers
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 (Catalogna) | 0x0403 |
Chinese_HongKong | Cinese (Hong Kong - R.A.S., Repubblica popolare cinese) | 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 (Malaysia) | 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 (neutrale) | 0x0019 |
Serbian_Cyrillic | Serbo (Serbia e Montenegro, Ex, Cirillico) | 0x0C1A |
Serbo (alfabeto latino) | Serbo (Serbia e Montenegro, precedente, 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 LCID per alcune lingue della tabella vengono generati usando l'identificatore della lingua, l'identificatore di sottolanguage e l'identificatore di ordinamento.
Per altre informazioni sulle lingue e sugli identificatori associati, vedere Costanti e stringhe dell'identificatore del linguaggio.
Nota
Non vi è alcuna garanzia che tutte queste chiavi del Registro di sistema linguistico saranno presenti in qualsiasi computer specificato. Il wordbreaker per qualsiasi lingua specifica può o non essere installato nel computer a seconda delle impostazioni utente.
A partire da Windows 8.1, il modo preferito per usare wordbreakers è tramite la classe Api WinRT WordsSegmenter.
Risorse aggiuntive
- Per informazioni su come implementare e usare word breaker e stemmer personalizzati per altre lingue e impostazioni locali, vedere Estensione delle risorse del linguaggio in Windows Search.
- Se è necessario identificare la lingua di un testo, è possibile usare Il rilevamento automatico della lingua (LAD), disponibile in Windows 7 e versioni successive. Per altre informazioni, vedere Extended Linguistic Services (ELS).
- Per informazioni sulla gestione, la query e l'estensione dell'indice, vedere la Guida per sviluppatori di Windows Search.
Argomenti correlati