Języki obsługiwane przez usługę Windows Search
W tym temacie opisano, jak usługa Windows Search obsługuje wiele języków.
Tokenizacja, wordbreakers i zasoby językowe
Usługa Windows Search jest niezależna od języka, ale dokładność wyszukiwania w różnych językach może się różnić ze względu na sposób tokenizowania tekstu przez narzędzia wordbreakers. Moduły dzielenia wyrazów implementują różne reguły tokenizacji dla języków i dzielą tekst na poszczególne tokeny lub wyrazy, które mają być indeksowane lub wyszukiwane.
Zarówno język indeksowanego tekstu, jak i ciąg zapytania są podzielone na tokeny. Ponieważ reguły tokenizacji różnią się w zależności od języka, istnieją oddzielne edytory wyrazów dla każdego języka lub rodziny języków. Jeśli istnieje niezgodność między językiem zapytań a indeksowanym językiem, wyniki mogą być nieprzewidywalne.
Usługa Windows Search jest dostarczana z dobrze zdefiniowanym zestawem wordbreakers. Klasyczne składniki programu wordbreaker i stemmer są obsługiwane w systemie Windows Vista i nowszych wersjach. Jeśli nie można określić języka dokumentu, usługa Windows Search próbuje wykryć język w celu zidentyfikowania najbardziej odpowiedniego edytora wyrazów. Usługa Windows Search próbuje wykryć język, wywołując GetSystemPreferredUILanguages funkcji w celu określenia pierwszego języka interfejsu użytkownika (MUI) (zazwyczaj jest to język interfejsu użytkownika systemu, chyba że zainstalowano pakiety językowe MUI). Jeśli to wywołanie powiedzie się, zostanie użyty edytor wyrazów dla pierwszego języka MUI. Jeśli wywołanie metody GetSystemPreferredUILanguages zakończy się niepowodzeniem, usługa Windows Search pobierze ustawienia regionalne systemu, wywołując funkcję GetSystemDefaultLCID i używa narzędzia wordbreaker skojarzonego z tym ustawieniami regionalnymi.
Jeśli dla języka nie zainstalowano narzędzia wordbreaker, usługa Windows Search przerywa odstępy przy użyciu narzędzia Neutral wordbreaker.
Język można usunąć za pomocą rejestru, jak pokazano w poniższym przykładzie.
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
ContentIndex
Language
Dutch_Dutch
(Default)
Locale
NoiseFile
StemmerClass = CLSID
WBreakerClass = CLSID
Napiwek
Jeśli wprowadzisz zmiany w rejestrze, uruchom ponownie usługę Windows Search.
Gdy usługa Windows Search wymaga nowego narzędzia do łamania wyrazów, identyfikator klasy (CLSID) jest odczytywany, a tworzone wystąpienie narzędzia wordbreaker jest buforowane.
Niestandardowy edytor wyrazów dla języka można utworzyć, implementując interfejs IWordBreaker. Usługa Windows Search wywołuje następnie metody IWordBreaker podczas tworzenia indeksów zawartości i uruchamiania zapytań.
Informacje o ustawieniach regionalnych dla indeksowanej zawartości są pobierane ze źródła zawartości. Jeśli implementacja źródłowa nie zna ustawień regionalnych indeksowanej zawartości, powinna ustawić ustawienia regionalne na wartość LOCALE_NEUTRAL.
Jeśli na przykład implementujesz program obsługi filtrów (implementacja interfejsu IFilter), program obsługi właściwości lub program obsługi protokołu, należy ustawić ustawienia regionalne dla indeksowanej zawartości na LOCALE_NEUTRAL, chyba że masz określone informacje regionalne i są pewni jego dokładności.
Napiwek
Jeśli zapytanie indeksu jest oparte na danych wejściowych użytkownika, ustawienia regionalne powinny być zgodne z językiem, w którym użytkownik wpisuje. Ustawienia regionalne można określić, wywołując funkcję GetKeyboardLayout.
Języki obsługiwane przez program wordbreakers
Usługa Windows Search zawiera edytory wyrazów do obsługi następujących języków.
Klucz rejestru | Język (podjęzyczność) | Identyfikator LCID |
---|---|---|
Arabic_SaudiArabia | Arabski (neutralny) | 0x0001 |
Bengali_Default | Bangla (neutralna) | 0x0045 |
Bulgarian_Default | Bułgarski (Bułgaria) | 0x0402 |
Catalan_Default | Kataloński (kataloński) | 0x0403 |
Chinese_HongKong | Chiński (Hongkong SAR, CHRL) | 0x0C04 |
Chinese_Simplified | Chiński (uproszczony) | 0x0804 |
Chinese_Traditional | Chiński (tradycyjny) | 0x0404 |
Croatian_Default | Chorwacki (Chorwacja) | 0x041A |
Czech_Default | Czechy (Czechy) | 0x0405 |
Danish_Default | Duński (Dania) | 0x0406 |
Dutch_Dutch | Holenderski (Holandia) | 0x0413 |
English_UK | Angielski (Wielka Brytania) | 0x0809 |
English_US | Angielski (Stany Zjednoczone) | 0x0409 |
Finnish_Default | Fiński (Finlandia) | 0x040B |
French_French | Francuski (Francja) | 0x040C |
German_German | Niemiecki (Niemcy) | 0x0407 |
Greek_Default | Grecki (Grecja) | 0x0408 |
Gujarati_Default | Gujarati (Indie) | 0x0447 |
Hebrew_Default | Hebrajski (neutralny) | 0x000D |
Hindi_Default | Hindi (Indie) | 0x0439 |
Hungarian_Default | Węgierski (Węgry) | 0x040E |
Icelandic_Default | Islandia (Islandia) | 0x040F |
Indonesian_Default | Indonezyjski (Indonezja) | 0x0421 |
Italian_Italian | Włoski (Włochy) | 0x0410 |
Japanese_Default | Japoński (Japonia) | 0x0411 |
Kannada_Default | Kannada (Indie) | 0x044B |
Korean_Default | Koreański (Korea) | 0x0412 |
Latvian_Default | Łotewski (Łotewski) | 0x0426 |
Lithuanian_Default | Litewski (litewski) | 0x0427 |
Malay_Malaysia | Malajski (Malezja) | 0x043E |
Malayalam_Default | Malayalam (neutralny) | 0x004C |
Marathi_Default | Marathi (Indie) | 0x044E |
Norwegian_Bokmal | Norweski (Bokmål, Norwegia) | 0x0414 |
Polish_Default | Polski (Polska) | 0x0415 |
Portuguese_Portugal | Portugalski (Portugalia) | 0x0816 |
Portuguese_Brazil | Portugalski (Brazylia) | 0x0416 |
Punjabi_Default | Pendżabi (Indie) | 0x0446 |
Romanian_Default | Rumuński (Rumunia) | 0x0418 |
Russian_Default | Rosyjski (neutralny) | 0x0019 |
Serbian_Cyrillic | Serbski (Serbia i Czarnogóra, były, cyrylica) | 0x0C1A |
Serbian_Latin | Serbski (Serbia i Czarnogóra, były, łaciński) | 0x081A |
Slovak_Default | Słowacki (Słowacja) | 0x041B |
Slovenian_Default | Słowenia (Słowenia) | 0x0424 |
Spanish_Modern | Hiszpański (Hiszpania, Nowoczesny sort) | 0x0C0A |
Swedish_Default | Szwedzki (Szwecja) | 0x041D |
Tamil_Default | Tamil (Indie) | 0x0449 |
Telugu_Default | Telugu (Indie) | 0x044A |
Thai_Default | Tajski (Tajlandia) | 0x041E |
Turkish_Default | Turecki (Türkiye) | 0x041F |
Ukrainian_Default | Ukraiński (Ukraina) | 0x0422 |
Urdu_Default | Urdu (Pakistan) | 0x0420 |
Vietnamese_Default | Wietnamski (Wietnam) | 0x042A |
Nuta
Identyfikatory LCID dla niektórych języków w tabeli są generowane przy użyciu identyfikatora języka, identyfikatora podrzędnego i identyfikatora sortowania.
Aby uzyskać więcej informacji na temat języków i skojarzonych identyfikatorów, zobacz stałe identyfikatora języka i ciągi.
Nuta
Nie ma gwarancji, że wszystkie te klucze rejestru języka będą obecne na każdej maszynie. Edytor wyrazów dla danego języka może być zainstalowany na maszynie lub nie może być zainstalowany w zależności od ustawień użytkownika.
Począwszy od systemu Windows 8.1, preferowanym sposobem korzystania z narzędzi wordbreakers jest użycie interfejsu API WinRT WordsSegmenter klasy.
Dodatkowe zasoby
- Aby uzyskać informacje na temat implementowania i używania niestandardowych elementów podziału wyrazów i stemmerów dla dodatkowych języków i ustawień regionalnych, zobacz Rozszerzanie zasobów językowych w usłudze Windows Search.
- Jeśli musisz zidentyfikować język tekstu, możesz użyć funkcji automatycznego wykrywania języka (LAD), która jest dostępna w systemie Windows 7 lub nowszym. Aby uzyskać więcej informacji, zobacz Extended Linguistic Services (ELS).
- Aby uzyskać informacje na temat zarządzania indeksem, wykonywania zapytań i rozszerzania go, zobacz Przewodnik dewelopera usługi Windows Search.
Tematy pokrewne
-
Windows Search jako platformy programistycznej
-
używanie kodu zarządzanego z danymi powłoki i usługą Windows Search