Языки, поддерживаемые поиском Windows
В этом разделе описывается, как поиск Windows поддерживает несколько языков.
Токенизация, wordbreakers и языковые ресурсы
Поиск Windows не зависит от языка, но точность поиска на разных языках может отличаться из-за способа маркеризации текста разбиения слов. Wordbreakers реализуют различные правила маркеризации для языков и разбивают текст на отдельные маркеры или слова для индексирования или поиска.
Язык индексированного текста и строки запроса разбиваются на маркеры. Так как правила маркеризации зависят от языка, для каждого языка или семейства языков существуют отдельные разбиения слов. Если между языком запросов и индексируемым языком имеется несоответствие, результаты могут быть непредсказуемыми.
Поиск Windows поставляется с хорошо определенным набором словоразрывов. Классические компоненты wordbreaker и stemmer поддерживаются в Windows Vista и более поздних версиях. Если язык документа не удается определить, поиск Windows пытается определить язык, чтобы определить наиболее подходящий словоразрыватель. Поиск Windows пытается определить язык, вызвав GetSystemPreferredUILanguages функцию, чтобы определить первый язык пользовательского интерфейса (MUI), который обычно является языком пользовательского интерфейса системы, если не установлены языковые пакеты MUI. Если этот вызов выполнен успешно, используется средство разбиения слов для первого языка MUI. Если вызов GetSystemPreferredUILanguages завершается ошибкой, поиск Windows извлекает системный языковой стандарт, вызвав функцию GetSystemDefaultLCID и используя средство разбиения слов, связанное с этим языковым стандартом.
Если для языка не установлен средство разбиения слов, поиск Windows прерывается в пробелах с помощью Нейтрального wordbreaker.
Вы можете удалить язык через реестр, как показано в следующем примере.
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
ContentIndex
Language
Dutch_Dutch
(Default)
Locale
NoiseFile
StemmerClass = CLSID
WBreakerClass = CLSID
Кончик
При внесении изменений в реестр перезапустите поиск Windows.
Если для поиска Windows требуется новый средство разбиения слов, то идентификатор класса (CLSID) считывается, а экземпляр wordbreaker кэшируется.
Вы можете создать пользовательский средство разбиения слов для языка, реализуя интерфейс IWordBreaker. Затем поиск Windows вызывает методы IWordBreaker при создании индексов содержимого и выполнении запросов.
Сведения о языковом стандарте для индексированного содержимого извлекаются из источника содержимого. Если средство реализации источника не знает языковой стандарт индексированного содержимого, он должен задать для языкового стандарта значение LOCALE_NEUTRAL.
Например, если вы реализуете обработчик фильтра (реализация интерфейса IFilter), обработчика свойств или обработчика протокола, необходимо задать языковой стандарт для индексированного содержимого LOCALE_NEUTRAL, если у вас нет определенных сведений о языковом стандарте и не уверены в его точности.
Кончик
Если запрос индекса основан на входных данных пользователя, языковой стандарт должен соответствовать языку, в котором вводится пользователь. Этот языковой стандарт можно определить, вызвав функцию GetKeyboardLayout.
Языки, поддерживаемые wordbreakers
Поиск Windows включает wordbreakers для поддержки следующих языков.
Раздел реестра | Язык (подлангуга) | LCID |
---|---|---|
Arabic_SaudiArabia | Арабский (нейтральный) | 0x0001 |
Bengali_Default | Bangla (нейтральный) | 0x0045 |
Bulgarian_Default | Болгарский (Болгария) | 0x0402 |
Catalan_Default | Каталонский (каталонский) | 0x0403 |
Chinese_HongKong | Китайский (Гонконг САР, PRC) | 0x0C04 |
Chinese_Simplified | Китайский (упрощенное письмо) | 0x0804 |
Chinese_Traditional | Китайский (традиционное) | 0x0404 |
Croatian_Default | Хорватский (Хорватия) | 0x041A |
Czech_Default | Чешская (Чешская Республика) | 0x0405 |
Danish_Default | Датский (Дания) | 0x0406 |
Dutch_Dutch | Голландский (Нидерланды) | 0x0413 |
English_UK | Английский (Соединенное Королевство) | 0x0809 |
English_US | Английский (США) | 0x0409 |
Finnish_Default | Финский (Финляндия) | 0x040B |
French_French | Французский (Франция) | 0x040C |
German_German | Немецкий (Германия) | 0x0407 |
Greek_Default | Греческий (Греция) | 0x0408 |
Gujarati_Default | Гуджарати (Индия) | 0x0447 |
Hebrew_Default | Иврит (нейтральный) | 0x000D |
Hindi_Default | Хинди (Индия) | 0x0439 |
Hungarian_Default | Венгерский (Венгрия) | 0x040E |
Icelandic_Default | Исландия (Исландия) | 0x040F |
Indonesian_Default | Индонезия (Индонезия) | 0x0421 |
Italian_Italian | Итальянский (Италия) | 0x0410 |
Japanese_Default | Японский (Япония) | 0x0411 |
Kannada_Default | Каннада (Индия) | 0x044B |
Korean_Default | Корейский (Корея) | 0x0412 |
Latvian_Default | Латвийский (Латвия) | 0x0426 |
Lithuanian_Default | Литовская (Литовская) | 0x0427 |
Malay_Malaysia | Малайский (Малайзия) | 0x043E |
Malayalam_Default | Малаялам (нейтральный) | 0x004C |
Marathi_Default | Маратхи (Индия) | 0x044E |
Norwegian_Bokmal | Норвежский (Букмол, Норвегия) | 0x0414 |
Polish_Default | Польский (Польша) | 0x0415 |
Portuguese_Portugal | Португальский (Португалия) | 0x0816 |
Portuguese_Brazil | Португальский (Бразилия) | 0x0416 |
Punjabi_Default | Пенджаби (Индия) | 0x0446 |
Romanian_Default | Румын (Румыния) | 0x0418 |
Russian_Default | Русский (нейтральный) | 0x0019 |
Serbian_Cyrillic | Сербский (Сербия и Черногория, бывший, кириллический) | 0x0C1A |
Serbian_Latin | Сербский (Сербия и Черногория, бывший, латинский) | 0x081A |
Slovak_Default | Словацкий (Словакия) | 0x041B |
Slovenian_Default | Словен (Словения) | 0x0424 |
Spanish_Modern | Испанский (Испания, современная сортировка) | 0x0C0A |
Swedish_Default | Шведский (Швеция) | 0x041D |
Tamil_Default | Тамиль (Индия) | 0x0449 |
Telugu_Default | Telugu (Индия) | 0x044A |
Thai_Default | Тайский (Таиланд) | 0x041E |
Turkish_Default | Турецкий (Türkiye) | 0x041F |
Ukrainian_Default | Украинский (Украина) | 0x0422 |
Urdu_Default | Урду (Пакистан) | 0x0420 |
Vietnamese_Default | Вьетнамцы (Вьетнам) | 0x042A |
Заметка
LCID для некоторых языков в таблице создаются с помощью идентификатора языка, идентификатора подлангуа и идентификатора сортировки.
Дополнительные сведения о языках и связанных идентификаторах см. в разделе Константы и строки идентификаторов языка.
Заметка
Нет никакой гарантии, что все эти разделы реестра языков будут присутствовать на любом компьютере. Средство разбиения слов для любого заданного языка может быть установлено на компьютере в зависимости от параметров пользователя.
Начиная с Windows 8.1, предпочтительный способ использования wordbreakers — этокласса WinRT APIWordSegmenter.
Дополнительные ресурсы
- Сведения о реализации и использовании пользовательских средств разбиения слов и стеммеров для дополнительных языков и языковых стандартов см. в расширении языковых ресурсов впоиска Windows.
- Если вам нужно определить язык фрагмента текста, можно использовать автоматическое обнаружение языка (LAD), доступное в Windows 7 и более поздних версиях. Дополнительные сведения см. в расширенных лингвистических служб (ELS).
- Сведения об управлении, запросе и расширении индекса см. в руководстве разработчикапоиска Windows.
Связанные разделы
-
Обзор поиска Windows
-
использование управляемого кода с данными оболочки и поиска Windows