Языки, поддерживаемые Windows Search
В этом разделе описывается, как Windows Search поддерживает несколько языков.
Токенизация, средства разбиения по словам и языковые ресурсы
Поиск Windows не зависит от языка, но точность поиска на разных языках может отличаться из-за способа разметки текста средствами разбиения по словам. Средства разбиения по словам реализуют различные правила маркеризации для языков и разбивают текст на отдельные маркеры или слова для индексирования или поиска.
Язык индексированного текста и строка запроса разбиваются на маркеры. Так как правила маркеризации зависят от языка, существуют отдельные средства разбиения по словам для каждого языка или семейства языков. В случае несоответствия между языком запросов и индексируемым языком результаты могут быть непредсказуемыми.
Windows Search поставляется с четко определенным набором средств разбиения по словам. Классические компоненты средства разбиения по словам и парадигматического модуля поддерживаются в Windows Vista и более поздних версиях. Если не удается определить язык документа, Поиск Windows пытается определить язык, чтобы определить наиболее подходящее средство разбиения по словам. Поиск Windows пытается определить язык, вызывая функцию GetSystemPreferredUILanguages , чтобы определить первый язык многопользовательского интерфейса (который обычно является языком пользовательского интерфейса системы, если не установлены языковые пакеты MUI). Если этот вызов завершается успешно, используется средство разбиения по словам для первого языка MUI. Если вызов GetSystemPreferredUILanguages завершается сбоем, Windows Search получает системный языковой стандарт, вызывая функцию GetSystemDefaultLCID и использует средство разбиения по словам, связанное с этим языковым стандартом.
Если для языка не установлено средство разбиения по словам, Поиск Windows прерывает пробелы с помощью нейтрального средства разбиения по словам.
Вы можете удалить язык с помощью реестра, как показано в следующем примере.
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
ContentIndex
Language
Dutch_Dutch
(Default)
Locale
NoiseFile
StemmerClass = CLSID
WBreakerClass = CLSID
Совет
Если вы внесете изменения в реестр, перезапустите Поиск Windows.
Если для Поиска Windows требуется новое средство разбиения по словам, считывается идентификатор класса (CLSID), а экземпляр средства разбиения по словам кэшируется.
Вы можете создать пользовательское средство разбиения по словам для языка, реализовав интерфейс IWordBreaker . Затем Поиск Windows вызывает методы IWordBreaker при сборке индексов содержимого и выполнении запросов.
Сведения о языковом стандарте для индексированного содержимого извлекаются из источника содержимого. Если средство реализации источника не знает языковой стандарт индексированного содержимого, он должен задать для него значение LOCALE_NEUTRAL.
Например, при реализации обработчика фильтра (реализация интерфейса IFilter ), обработчика свойств или обработчика протокола следует задать для индексированного содержимого языковой стандарт LOCALE_NEUTRAL если у вас нет конкретных сведений о языковом стандарте и вы не уверены в его точности.
Совет
Если запрос индекса основан на введенных пользователем данных, языковой стандарт должен соответствовать языку, на котором вводит пользователь. Этот языковой стандарт можно определить, вызвав функцию GetKeyboardLayout .
Языки, поддерживаемые средствами разбиения по словам
Поиск Windows включает средства разбиения на слова для поддержки следующих языков.
Раздел реестра | Язык (подязык) | LCID |
---|---|---|
Arabic_SaudiArabia | Арабский (нейтральный) | 0x0001 |
Bengali_Default | Бангла (нейтральная) | 0x0045 |
Bulgarian_Default | Болгарский (Болгария) | 0x0402 |
Catalan_Default | Catalan (Catalan) | 0x0403 |
Chinese_HongKong | Китайский (Гонконг, КНР) | 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 |
Сербский (латиница) | Сербский (Сербия и Черногория, бывший, латиница) | 0x081A |
Slovak_Default | Словацкий (Словакия) | 0x041B |
Slovenian_Default | Словенский (Словения) | 0x0424 |
Spanish_Modern | Испанский (Испания, современная сортировка) | 0x0C0A |
Swedish_Default | Шведский (Швеция) | 0x041D |
Tamil_Default | Тамильский (Индия) | 0x0449 |
Telugu_Default | Телугу (Индия) | 0x044A |
Thai_Default | Тайский (Таиланд) | 0x041E |
Turkish_Default | Турецкий (Türkiye) | 0x041F |
Ukrainian_Default | Украинский (Украина) | 0x0422 |
Urdu_Default | Урду (Пакистан) | 0x0420 |
Vietnamese_Default | Вьетнамский (Вьетнам) | 0x042A |
Примечание
Идентификаторы LCID для некоторых языков в таблице создаются с помощью идентификатора языка, идентификатора подязыка и идентификатора сортировки.
Дополнительные сведения о языках и связанных идентификаторах см. в разделе Константы и строки идентификаторов языка.
Примечание
Нет никакой гарантии, что все эти разделы реестра языков будут присутствовать на любом компьютере. Средство разбиения по словам для любого языка может быть установлено на компьютере в зависимости от параметров пользователя.
Начиная с Windows 8.1, предпочтительным способом использования разбиения по словам является класс WordSegmenter API WinRT.
Дополнительные ресурсы
- Сведения о том, как реализовать и использовать пользовательские средства разбиения по словам и парадигматические модули для дополнительных языков и языковых стандартов, см. в статье Расширение языковых ресурсов в Поиске Windows.
- Если вам нужно определить язык фрагмента текста, можно использовать функцию автоматического распознавания языка (LAD), которая доступна в Windows 7 и более поздних версиях. Дополнительные сведения см. в разделе Расширенные лингвистические службы (ELS).
- Сведения об управлении индексом, его запросах и расширении см. в руководстве разработчика для Поиска Windows.
Связанные темы