Языки, поддерживаемые 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 Search

Windows Search как платформа разработки

Использование управляемого кода с данными оболочки и Windows Search