Поделиться через


Языки, поддерживаемые поиском 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 в качестве платформы разработки

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