Von Windows Search unterstützte Sprachen
In diesem Thema wird beschrieben, wie Windows Search mehrere Sprachen unterstützt.
Tokenisierung, Wordbreaker und Sprachressourcen
Windows Search ist sprachunabhängig, aber die Genauigkeit der Suche zwischen den Sprachen kann aufgrund der Art und Weise variieren, wie Wordbreaker Text tokenisieren. Wordbreaker 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 Wortbrecher für jede Sprache oder Sprachfamilie. Wenn zwischen der Abfragesprache und der indizierten Sprache ein Konflikt besteht, können die Ergebnisse unvorhersehbar sein.
Windows Search wird mit einem klar definierten Satz von Wortbrechern ausgeliefert. Klassische Wordbreaker- und Stemmerkomponenten werden in Windows Vista und höher unterstützt. Wenn die Sprache eines Dokuments nicht bestimmt werden kann, versucht Windows Search, die Sprache zu erkennen, um den am besten geeigneten Wordbreaker zu identifizieren. Windows Search versucht, die Sprache zu erkennen, indem die GetSystemPreferredUILanguages-Funktion aufgerufen wird, um die erste MUI-Sprache (Multiple User Interface) zu bestimmen (die in der Regel die Sprache der Systembenutzeroberfläche ist, es sei denn, MUI-Sprachpakete sind installiert). Wenn dieser Aufruf erfolgreich ist, wird der Wortbrecher 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 wird, und verwendet den diesem Gebietsschema zugeordneten Wordbreaker.
Wenn kein Wordbreaker für eine Sprache installiert ist, unterbricht Windows Search den Leerraum mithilfe des Wordbreakers Neutral .
Sie können eine Sprache über die Registrierung entfernen, wie im folgenden Beispiel veranschaulicht.
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
ContentIndex
Language
Dutch_Dutch
(Default)
Locale
NoiseFile
StemmerClass = CLSID
WBreakerClass = CLSID
Tipp
Wenn Sie Änderungen an der Registrierung vornehmen, starten Sie Windows Search neu.
Wenn Windows Search einen neuen Wordbreaker erfordert, wird der Klassenbezeichner (CLSID) gelesen, und der instanziierte Wordbreaker wird zwischengespeichert.
Sie können einen benutzerdefinierten Wordbreaker für eine Sprache erstellen, indem Sie die IWordBreaker-Schnittstelle implementieren. Windows Search ruft dann die IWordBreaker-Methoden auf, wenn Inhaltsindizes erstellt und Abfragen ausgeführt werden.
Gebietsschemainformationen für indizierte Inhalte werden aus der Quelle des Inhalts abgerufen. Wenn der Quellimplementierer das Gebietsschema des indizierten Inhalts nicht kennt, sollte er das Gebietsschema auf LOCALE_NEUTRAL festlegen.
Wenn Sie beispielsweise einen Filterhandler (eine Implementierung der IFilter-Schnittstelle ), Eigenschaftenhandler oder Protokollhandler implementieren, sollten Sie das Gebietsschema für indizierten Inhalt auf LOCALE_NEUTRAL festlegen, es sei denn, Sie verfügen über bestimmte Gebietsschemainformationen und sind sich dessen Genauigkeit sicher.
Tipp
Wenn eine Indexabfrage auf der Benutzereingabe basiert, sollte das Gebietsschema mit der Sprache übereinstimmen, in der der Benutzer eingabet. Sie können dieses Gebietsschema bestimmen, indem Sie die GetKeyboardLayout-Funktion aufrufen.
Von Wordbreakern unterstützte Sprachen
Windows Search enthält Wordbreaker 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 | Walisisch (Großbritannien) | 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 |
Serbisch (Kyrillisch) | Serbisch (Serbien und Montenegro, früher, Kyrillisch) | 0x0C1A |
Serbisch (Lateinisch) | 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 | Tamil (Indien) | 0x0449 |
Telugu_Default | Telugu (Indien) | 0x044A |
Thai_Default | Thai (Thailand) | 0x041E |
Turkish_Default | Türkisch (Türkiye) | 0x041F |
Ukrainian_Default | Ukrainisch (Ukraine) | 0x0422 |
Urdu_Default | Urdu (Pakistan) | 0x0420 |
Vietnamese_Default | Vietnamesisch (Vietnam) | 0x042A |
Hinweis
LCIDs für einige Sprachen in der Tabelle werden mithilfe des Sprachbezeichners, des Untersprachbezeichners und des Sortierbezeichners generiert.
Weitere Informationen zu Sprachen und zugeordneten Bezeichnern finden Sie unter Sprachbezeichnerkonstanten und Zeichenfolgen.
Hinweis
Es gibt keine Garantie, dass alle diese Sprachregistrierungsschlüssel auf einem bestimmten Computer vorhanden sind. Der Wordbreaker für eine bestimmte Sprache kann je nach Benutzereinstellungen auf dem Computer installiert sein oder nicht.
Ab Windows 8.1 ist die bevorzugte Möglichkeit, Wordbreaker zu verwenden, über die WinRT-API WordsSegmenter-Klasse.
Weitere Ressourcen
- Informationen zum Implementieren und Verwenden von benutzerdefinierten Worttrennungen und -stemmeren für zusätzliche Sprachen und Gebietsschemas finden Sie unter Erweitern von Sprachressourcen in Windows Search.
- Wenn Sie die Sprache eines Textteils 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 Index finden Sie im Windows Search-Entwicklerhandbuch.
Zugehörige Themen