Добавление языковых анализаторов в строковые поля в индексе Azure Когнитивный поискAdd language analyzers to string fields in an Azure Cognitive Search index

Анализатор языка является отдельным типом анализатора текста, которая выполняет лексический анализ с использованием лингвистических правил целевого языка.A language analyzer is a specific type of text analyzer that performs lexical analysis using the linguistic rules of the target language. Каждое поле, поддерживающее поиск, обладает свойством анализатора.Every searchable field has an analyzer property. Если содержимое состоит из переведенных строк, например отдельных полей для текста на английском и китайском языках, можно указать языковые анализаторы для каждого поля, чтобы получить доступ к расширенным лингвистическим возможностям анализаторов.If your content consists of translated strings, such as separate fields for English and Chinese text, you could specify language analyzers on each field to access the rich linguistic capabilities of those analyzers.

Когда следует использовать анализатор языкаWhen to use a language analyzer

Следует рассмотреть анализатор языка, когда известно, что слово или структура предложения добавляет значение в синтаксический анализ текста.You should consider a language analyzer when awareness of word or sentence structure adds value to text parsing. Распространенным примером является Ассоциация нестандартных форм-команд ("приведение" и "приведение") или существительных во множественном числе ("мыши" и "мышь").A common example is the association of irregular verb forms ("bring" and "brought) or plural nouns ("mice" and "mouse"). Без лингвистической осведомленности эти строки анализируются только по физическим характеристикам, которые не могут перехватывать соединение.Without linguistic awareness, these strings are parsed on physical characteristics alone, which fails to catch the connection. Так как большие фрагменты текста, скорее всего, будут иметь такое содержимое, поля, состоящие из описаний, проверок или сводок, являются хорошими кандидатами для анализатора языка.Since large chunks of text are more likely to have this content, fields consisting of descriptions, reviews, or summaries are good candidates for a language analyzer.

Также следует подумать об анализаторах языка, когда содержимое состоит из строк, отличных от западных языков.You should also consider language analyzers when content consists of non-Western language strings. Несмотря на то, что анализатор по умолчанию не зависит от языка, концепция использования пробелов и специальных символов (дефисы и косые черты) для разделения строк обычно является более применимой к западных языкам, чем к незападных.While the default analyzer is language-agnostic, the concept of using spaces and special characters (hyphens and slashes) to separate strings tends is more applicable to Western languages than non-Western ones.

Например, в китайском, японском, корейском (CJK) и других азиатских языках пробел не обязательно должен быть разделителем слов.For example, in Chinese, Japanese, Korean (CJK), and other Asian languages, a space is not necessarily a word delimiter. Рассмотрим следующую японскую строку.Consider the following Japanese string. Поскольку в нем нет пробелов, анализатор, не зависящий от языка, скорее всего, будет анализировать всю строку как один маркер, когда на самом деле строка фактически является фразой.Because it has no spaces, a language-agnostic analyzer would likely analyze the entire string as one token, when in fact the string is actually a phrase.

これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)

В приведенном выше примере успешный запрос должен включать полный маркер или частичный маркер с помощью подстановочного знака суффикса, что приводит к неестественному и ограничению возможностей поиска.For the example above, a successful query would have to include the full token, or a partial token using a suffix wildcard, resulting in an unnatural and limiting search experience.

Лучший опыт — искать отдельные слова: 明るい (яркий), 私たちの (наш), 銀河系 (Galaxy).A better experience is to search for individual words: 明るい (Bright), 私たちの (Our), 銀河系 (Galaxy). Использование одного из анализаторов на японском языке, доступных в Когнитивный поиск, скорее всего, приведет к разблокированию такого поведения, так как эти анализаторы лучше разбивают фрагмент текста на осмысленные слова на целевом языке.Using one of the Japanese analyzers available in Cognitive Search is more likely to unlock this behavior because those analyzers are better equipped at splitting the chunk of text into meaningful words in the target language.

Сравнение Lucene и Microsoft AnalyzerComparing Lucene and Microsoft Analyzers

Azure Когнитивный поиск поддерживает анализаторы языков 35, поддерживающие пакет Azure Lucene, и анализаторы языка 50, которые поддерживаются собственной технологией обработки естественного языка Майкрософт, используемой в Office и Bing.Azure Cognitive Search supports 35 language analyzers backed by Lucene, and 50 language analyzers backed by proprietary Microsoft natural language processing technology used in Office and Bing.

Некоторые разработчики предпочитают более знакомое и простое решение Lucene с открытым исходным кодом.Some developers might prefer the more familiar, simple, open-source solution of Lucene. Анализаторы языка Lucene работают быстрее, однако анализаторы Майкрософт обладают расширенными функциями, например лемматизацией, разбором слов на составные части (на таких языках, как немецкий, датский, голландский, шведский, норвежский, эстонский, финский, венгерский, словацкий) и распознаванием сущностей (URL-адресов, адресов электронной почты, дат, чисел).Lucene language analyzers are faster, but the Microsoft analyzers have advanced capabilities, such as lemmatization, word decompounding (in languages like German, Danish, Dutch, Swedish, Norwegian, Estonian, Finish, Hungarian, Slovak) and entity recognition (URLs, emails, dates, numbers). Рекомендуем вам сравнить результаты работы анализаторов от Майкрософт и Lucene и выбрать оптимальный для себя вариант.If possible, you should run comparisons of both the Microsoft and Lucene analyzers to decide which one is a better fit.

В зависимости от языка индексирование на базе анализаторов Майкрософт занимает в среднем в два-три раза больше времени, чем с помощью эквивалентных анализаторов Lucene.Indexing with Microsoft analyzers is on average two to three times slower than their Lucene equivalents, depending on the language. Время выполнения поискового запроса не должно значительно отличаться от запросов средних размеров.Search performance should not be significantly affected for average size queries.

Анализаторы английского языкаEnglish analyzers

По умолчанию используется анализатор Lucene (цен. категория "Стандартный"), который хорошо работает с английским языком. Однако вполне вероятно, что лучше него работают анализаторы для английского языка от Lucene или Майкрософт.The default analyzer is Standard Lucene, which works well for English, but perhaps not as well as Lucene's English analyzer or Microsoft's English analyzer.

  • Анализатор для английского языка Lucene расширяет возможности стандартного анализатора.Lucene's English analyzer extends the standard analyzer. Он удаляет из слов признаки принадлежности (символы 's в конце), выделяет корень слова с помощью алгоритма стеммера Портера и удаляет английские стоп-слова.It removes possessives (trailing 's) from words, applies stemming as per Porter Stemming algorithm, and removes English stop words.

  • Анализатор английского языка от Майкрософт вместо выделения корня слова выполняет лемматизацию.Microsoft's English analyzer performs lemmatization instead of stemming. Это означает, что он может очень эффективно справляться с грамматическими и неправильными формами слов, что приводит к более релевантным результатам поиска.This means it can handle inflected and irregular word forms much better which results in more relevant search results

Настройка анализаторовConfiguring analyzers

Языковые анализаторы используются как есть.Language analyzers are used as-is. Для каждого поля в определении индекса можно задать в свойстве анализатора имя, определяющее язык и лингвистический стек (Microsoft или Lucene).For each field in the index definition, you can set the analyzer property to an analyzer name that specifies the language and linguistics stack (Microsoft or Lucene). Этот же анализатор будет применяться при индексировании и поиске поля.The same analyzer will be applied when indexing and searching for that field. Например, в одном индексе могут существовать отдельные поля для описаний гостиницы на английском, французском и испанском языках.For example, you can have separate fields for English, French, and Spanish hotel descriptions that exist side by side in the same index.

Примечание

Нельзя использовать другой анализатор языка во время индексирования, чем во время выполнения запроса для поля.It is not possible to use a different language analyzer at indexing time than at query time for a field. Эта возможность зарезервирована для пользовательских анализаторов.That capability is reserved for custom analyzers. По этой причине, если вы попытаетесь задать для свойств сеарчанализер или индексанализер имя анализатора языка, REST API будет возвращать ответ об ошибке.For this reason, if you try to set the searchAnalyzer or indexAnalyzer properties to the name of a language analyzer, the REST API will return an error response. Вместо этого следует использовать свойство анализатора .You must use the analyzer property instead.

Используйте параметр запроса searchFields, чтобы указать поля для других языков, в которых будет выполнен запрос.Use the searchFields query parameter to specify which language-specific field to search against in your queries. В документах поискаможно просмотреть примеры запросов, включающие свойство анализатора.You can review query examples that include the analyzer property in Search Documents.

Дополнительные сведения о свойствах индекса см. в статье Создание индекса (Azure Когнитивный поиск REST API).For more information about index properties, see Create Index (Azure Cognitive Search REST API). Дополнительные сведения об анализе в Azure Когнитивный поиск см. в статье Анализаторы в azure когнитивный Поиск.For more information about analysis in Azure Cognitive Search, see Analyzers in Azure Cognitive Search.

Список анализаторов языкаLanguage analyzer list

Ниже приведен список поддерживаемых языков и названия анализаторов Lucene и Майкрософт.Below is the list of supported languages together with Lucene and Microsoft analyzer names.

ЯзыкLanguage Название анализатора МайкрософтMicrosoft Analyzer Name Название анализатора LuceneLucene Analyzer Name
АрабскийArabic ar.microsoftar.microsoft ar.lucenear.lucene
АрмянскийArmenian hy.lucenehy.lucene
БенгальскийBangla bn.microsoftbn.microsoft
БаскскийBasque eu.luceneeu.lucene
БолгарскийBulgarian bg.microsoftbg.microsoft bg.lucenebg.lucene
КаталонскийCatalan ca.microsoftca.microsoft ca.luceneca.lucene
Китайский (упрощенный)Chinese Simplified zh-Hans.microsoftzh-Hans.microsoft zh-Hans.lucenezh-Hans.lucene
Китайский (традиционное письмо)Chinese Traditional zh-Hant.microsoftzh-Hant.microsoft zh-Hant.lucenezh-Hant.lucene
ХорватскийCroatian hr.microsofthr.microsoft
ЧешскийCzech cs.microsoftcs.microsoft cs.lucenecs.lucene
ДатскийDanish da.microsoftda.microsoft da.luceneda.lucene
НидерландскийDutch nl.microsoftnl.microsoft nl.lucenenl.lucene
АнглийскийEnglish en.microsoften.microsoft en.luceneen.lucene
ЭстонскийEstonian et.microsoftet.microsoft
ФинскийFinnish fi.microsoftfi.microsoft fi.lucenefi.lucene
ФранцузскийFrench fr.microsoftfr.microsoft fr.lucenefr.lucene
ГалисийскийGalician gl.lucenegl.lucene
НемецкийGerman de.microsoftde.microsoft de.lucenede.lucene
ГреческийGreek el.microsoftel.microsoft el.luceneel.lucene
ГуджаратиGujarati gu.microsoftgu.microsoft
ИвритHebrew he.microsofthe.microsoft
HindiHindi hi.microsofthi.microsoft hi.lucenehi.lucene
ВенгерскийHungarian hu.microsofthu.microsoft hu.lucenehu.lucene
ИсландскийIcelandic is.microsoftis.microsoft
Индонезийский (бахаса)Indonesian (Bahasa) id.microsoftid.microsoft id.luceneid.lucene
ИрландскийIrish ga.lucenega.lucene
ИтальянскийItalian it.microsoftit.microsoft it.luceneit.lucene
ЯпонскийJapanese ja.microsoftja.microsoft ja.luceneja.lucene
КаннадаKannada kN. Microsoftkn.microsoft
КорейскийKorean ko.microsoftko.microsoft ko.luceneko.lucene
ЛатышскийLatvian lv.microsoftlv.microsoft lv.lucenelv.lucene
ЛитовскийLithuanian lt.microsoftlt.microsoft
МалаяламMalayalam ml.microsoftml.microsoft
Малайский (латиница)Malay (Latin) ms.microsoftms.microsoft
МаратхиMarathi mr.microsoftmr.microsoft
НорвежскийNorwegian nb.microsoftnb.microsoft no.luceneno.lucene
ПерсидскийPersian fa.lucenefa.lucene
ПольскийPolish pl.microsoftpl.microsoft pl.lucenepl.lucene
Португальский (Бразилия)Portuguese (Brazil) pt-Br.microsoftpt-Br.microsoft pt-Br.lucenept-Br.lucene
Португальский (Португалия)Portuguese (Portugal) pt-Pt.microsoftpt-Pt.microsoft pt-Pt.lucenept-Pt.lucene
ПанджабиPunjabi pa.microsoftpa.microsoft
РумынскийRomanian ro.microsoftro.microsoft ro.lucenero.lucene
РусскийRussian ru.microsoftru.microsoft ru.luceneru.lucene
Сербский (кириллица)Serbian (Cyrillic) sr-cyrillic.microsoftsr-cyrillic.microsoft
Сербский (латиница)Serbian (Latin) sr-latin.microsoftsr-latin.microsoft
СловацкийSlovak sk.microsoftsk.microsoft
СловенскийSlovenian sl.microsoftsl.microsoft
ИспанскийSpanish es.microsoftes.microsoft es.lucenees.lucene
ШведскийSwedish sv.microsoftsv.microsoft sv.lucenesv.lucene
ТамильскийTamil ta.microsoftta.microsoft
ТелугуTelugu te.microsoftte.microsoft
ТайскийThai th.microsoftth.microsoft th.luceneth.lucene
ТурецкийTurkish tr.microsofttr.microsoft tr.lucenetr.lucene
УкраинскийUkrainian uk.microsoftuk.microsoft
УрдуUrdu ur.microsoftur.microsoft
ВьетнамскийVietnamese vi.microsoftvi.microsoft

Все анализаторы, у которых в названии есть идентификатор Lucene, работают на базе анализаторов языка Apache Lucene.All analyzers with names annotated with Lucene are powered by Apache Lucene's language analyzers.

См. такжеSee also