Von der Windows-Suche unterstützte Sprachen
In diesem Thema wird beschrieben, wie Windows Search mehrere Sprachen unterstützt.
Tokenisierung, Wordbreakers und Sprachressourcen
Windows Search ist sprachunabhängig, aber die Genauigkeit der Suche in verschiedenen Sprachen kann aufgrund der Art und Weise variieren, wie Wörtertrennungen Text tokenisieren. Wordbreakers implementieren verschiedene Tokenisierungsregeln für Sprachen und unterteilen Text in einzelne Token oder Wörter, die indiziert oder durchsucht werden sollen.
Sowohl die Sprache des indizierten Texts als auch die Abfragezeichenfolge sind in Token unterteilt. Da Tokenisierungsregeln je nach Sprache variieren, gibt es separate Wörtertrennungen für jede Sprache oder Familie von Sprachen. Wenn zwischen der Abfragesprache und der indizierten Sprache ein Konflikt besteht, können die Ergebnisse unvorhersehbar sein.
Windows Search wird mit einem gut definierten Satz von Wörtertrennungen ausgeliefert. Klassische Wordbreaker- und Stemmerkomponenten werden in Windows Vista und höher unterstützt. Wenn die Sprache eines Dokuments nicht bestimmt werden kann, versucht Die Windows Search, die Sprache zu erkennen, um den am besten geeigneten Worttrennung zu identifizieren. Windows Search versucht, die Sprache zu erkennen, indem die GetSystemPreferredUILanguages-Funktion aufgerufen wird, um die erste MuI-Sprache (Dies ist in der Regel die Sprache der Systembenutzeroberfläche, es sei denn, MUI-Sprachpakete werden installiert). Wenn dieser Aufruf erfolgreich ist, wird der Worttrennung für die erste MUI-Sprache verwendet. Wenn der Aufruf von GetSystemPreferredUILanguages fehlschlägt, ruft Windows Search das Systemgebietsschema ab, indem die GetSystemDefaultLCID--Funktion aufgerufen und der diesem Gebietsschema zugeordnete Wordbreaker verwendet wird.
Wenn für eine Sprache kein Worttrennung installiert ist, bricht Windows Search mithilfe der Neutral Worttrennung auf Leerzeichen.
Sie können eine Sprache über die Registrierung entfernen, wie im folgenden Beispiel dargestellt.
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
ContentIndex
Language
Dutch_Dutch
(Default)
Locale
NoiseFile
StemmerClass = CLSID
WBreakerClass = CLSID
Trinkgeld
Wenn Sie Änderungen an der Registrierung vornehmen, starten Sie windows Search neu.
Wenn windows Search einen neuen Worttrennung erfordert, wird der Klassenbezeichner (CLSID) gelesen, und der instanziierte Worttrennung wird zwischengespeichert.
Sie können eine benutzerdefinierte Wörtertrennung für eine Sprache erstellen, indem Sie die IWordBreaker--Schnittstelle implementieren. Windows Search ruft dann die IWordBreaker- Methoden auf, wenn sie Inhaltsindizes erstellt und Abfragen ausführt.
Gebietsschemainformationen für indizierte Inhalte werden aus der Quelle des Inhalts abgerufen. Wenn der Quellimplementierer das Gebietsschema des indizierten Inhalts nicht kennt, sollte das Gebietsschema auf LOCALE_NEUTRALfestgelegt werden.
Wenn Sie z. B. einen Filterhandler implementieren (eine Implementierung der IFilter Schnittstelle), Eigenschaftenhandler oder Protokollhandler, sollten Sie das Gebietsschema für indizierte Inhalte auf LOCALE_NEUTRAL festlegen, es sei denn, Sie verfügen über bestimmte Gebietsschemainformationen und sind sicher, dass sie deren Genauigkeit haben.
Trinkgeld
Wenn eine Indexabfrage auf Benutzereingaben basiert, sollte das Gebietsschema mit der Sprache übereinstimmen, in der der Benutzer eingabet. Sie können dieses Gebietsschema ermitteln, indem Sie die funktion GetKeyboardLayout aufrufen.
Von Wordbreakers unterstützte Sprachen
Windows Search enthält Wörtertrennungen zur Unterstützung der folgenden Sprachen.
Registrierungsschlüssel | Sprache (Untersprache) | LCID |
---|---|---|
Arabic_SaudiArabia | Arabisch (Neutral) | 0x0001 |
Bengali_Default | Bangla (Neutral) | 0x0045 |
Bulgarian_Default | Bulgarisch (Bulgarien) | 0x0402 |
Catalan_Default | Katalanisch (Katalanisch) | 0x0403 |
Chinese_HongKong | Chinesisch (Hongkong SAR, VR China) | 0x0C04 |
Chinese_Simplified | Chinesisch (vereinfacht) | 0x0804 |
Chinese_Traditional | Chinesisch (traditionell) | 0x0404 |
Croatian_Default | Kroatisch (Kroatien) | 0x041A |
Czech_Default | Tschechisch (Tschechische Republik) | 0x0405 |
Danish_Default | Dänisch (Dänemark) | 0x0406 |
Dutch_Dutch | Niederländisch (Niederlande) | 0x0413 |
English_UK | Englisch (Vereinigtes Königreich) | 0x0809 |
English_US | Englisch (USA) | 0x0409 |
Finnish_Default | Finnisch (Finnland) | 0x040B |
French_French | Französisch (Frankreich) | 0x040C |
German_German | Deutsch (Deutschland) | 0x0407 |
Greek_Default | Griechisch (Griechenland) | 0x0408 |
Gujarati_Default | Gujarati (Indien) | 0x0447 |
Hebrew_Default | Hebräisch (Neutral) | 0x000D |
Hindi_Default | Hindi (Indien) | 0x0439 |
Hungarian_Default | Ungarisch (Ungarn) | 0x040E |
Icelandic_Default | Isländisch (Island) | 0x040F |
Indonesian_Default | Indonesisch (Indonesien) | 0x0421 |
Italian_Italian | Italienisch (Italien) | 0x0410 |
Japanese_Default | Japanisch (Japan) | 0x0411 |
Kannada_Default | Kannada (Indien) | 0x044B |
Korean_Default | Koreanisch (Korea) | 0x0412 |
Latvian_Default | Lettisch (Lettland) | 0x0426 |
Lithuanian_Default | Litauisch (litauisch) | 0x0427 |
Malay_Malaysia | Malaiisch (Malaysia) | 0x043E |
Malayalam_Default | Malayalam (Neutral) | 0x004C |
Marathi_Default | Marathi (Indien) | 0x044E |
Norwegian_Bokmal | Norwegisch (Bokmål, Norwegen) | 0x0414 |
Polish_Default | Polnisch (Polen) | 0x0415 |
Portuguese_Portugal | Portugiesisch (Portugal) | 0x0816 |
Portuguese_Brazil | Portugiesisch (Brasilien) | 0x0416 |
Punjabi_Default | Punjabi (Indien) | 0x0446 |
Romanian_Default | Rumänisch (Rumänien) | 0x0418 |
Russian_Default | Russisch (Neutral) | 0x0019 |
Serbian_Cyrillic | Serbisch (Serbien und Montenegro, Ehemalige, Kyrillisch) | 0x0C1A |
Serbian_Latin | Serbisch (Serbien und Montenegro, früher, Lateinisch) | 0x081A |
Slovak_Default | Slowakisch (Slowakei) | 0x041B |
Slovenian_Default | Slowenisch (Slowenien) | 0x0424 |
Spanish_Modern | Spanisch (Spanien, moderne Sortierung) | 0x0C0A |
Swedish_Default | Schwedisch (Schweden) | 0x041D |
Tamil_Default | Tamilisch (Indien) | 0x0449 |
Telugu_Default | Telugu (Indien) | 0x044A |
Thai_Default | Thailändisch (Thailand) | 0x041E |
Turkish_Default | Türkisch (Türkiya) | 0x041F |
Ukrainian_Default | Ukrainisch (Ukraine) | 0x0422 |
Urdu_Default | Urdu (Pakistan) | 0x0420 |
Vietnamese_Default | Vietnamesisch (Vietnam) | 0x042A |
Anmerkung
LCIDs für einige Sprachen in der Tabelle werden mithilfe des Sprachbezeichners, des Unterlanguierungsbezeichners und des Sortierbezeichners generiert.
Weitere Informationen zu Sprachen und zugehörigen Bezeichnern finden Sie unter Language Identifier Constants and Strings.
Anmerkung
Es gibt keine Garantie dafür, dass alle diese Sprachregistrierungsschlüssel auf einem beliebigen Computer vorhanden sind. Der Wordbreaker für eine bestimmte Sprache kann je nach Benutzereinstellungen auf dem Computer installiert sein oder nicht.
Ab Windows 8.1ist die bevorzugte Methode zum Verwenden von Wörtertrennungen über die WinRT-API WordsSegmenter-Klasse.
Zusätzliche Ressourcen
- Informationen zum Implementieren und Verwenden von benutzerdefinierten Worttrennungen und Wortstammwörtern für zusätzliche Sprachen und Gebietsschemas finden Sie unter Erweitern von Sprachressourcen in Windows Search.
- Wenn Sie die Sprache eines Textabschnitts identifizieren müssen, können Sie die automatische Spracherkennung (Language Auto-Detection, LAD) verwenden, die in Windows 7 und höher verfügbar ist. Weitere Informationen finden Sie unter Extended Linguistic Services (ELS).
- Informationen zum Verwalten, Abfragen und Erweitern des Indexes finden Sie im Windows Search Developer's Guide.
Verwandte Themen