Добавление настраиваемых анализаторов в строковые поля в индекс поиска ИИ Azure

Пользовательский анализатор — это определяемая пользователем комбинация одного токенизатора, одного или нескольких фильтров маркеров и одного или нескольких фильтров символов. Настраиваемый анализатор указывается в индексе поиска, а затем ссылается на имя определений полей, требующих пользовательского анализа. Настраиваемый анализатор вызывается на основе каждого поля. Атрибуты в поле определяют, используется ли он для индексирования, запросов или обоих.

В пользовательском анализаторе фильтры символов подготавливают входной текст перед обработкой маркеризатором (например, удаление разметки). Затем маркеризатор разбивает текст на маркеры. Наконец, фильтры маркеров изменяют маркеры, создаваемые токенизатором. Основные понятия и примеры см. в статье "Анализаторы" в службе "Поиск ИИ Azure".

Зачем использовать пользовательский анализатор?

Пользовательский анализатор позволяет управлять процессом преобразования текста в маркеры, поддерживающие индексирование и поиск, давая возможность выбирать вызываемые типы анализа или фильтрации, а также порядок их возникновения.

Создайте и назначьте пользовательский анализатор, если для ваших потребностей недостаточно встроенных анализаторов языка (Standard Lucence), встроенных или языковых анализаторов. Вы также можете создать пользовательский анализатор, если вы хотите использовать встроенный анализатор с настраиваемыми параметрами. Например, если вы хотите изменить maxTokenLength в Standard, вы создадите пользовательский анализатор с определяемым пользователем именем, чтобы задать этот параметр.

Сценарии, в которых пользовательские анализаторы могут быть полезны:

  • Использование фильтров символов для удаления разметки HTML перед разметкой текстов ввода или заменой определенных знаков или символов.

  • Фонетический поиск. Добавьте фонетический фильтр, чтобы искать слова на основе их звучания, а не написания.

  • Отключение лексического анализа. Используйте анализатор ключевых слов для создания доступных для поиска полей, которые не анализируются.

  • Быстрый поиск по префиксам или суффиксам. Добавьте фильтр маркеров, создающий N-граммы с определенной стороны, чтобы индексировать префиксы слов для быстрого сопоставления. Объедините его с обратным фильтром маркеров, чтобы выполнить сопоставление суффиксов.

  • Пользовательская разметка. Например, с помощью создателя маркеров пробелов можно разделить предложения на маркеры, используя пробел как разделитель.

  • Приведение к ASCII. Добавьте стандартный фильтр приведения к ASCII для нормализации диакритических знаков, таких как ö или ê, в условиях поиска.

Примечание.

Пользовательские анализаторы не предоставляются в портал Azure. Добавить пользовательский анализатор можно только с помощью кода, определяющего индекс.

Добавление пользовательского анализатора

Чтобы создать пользовательский анализатор, укажите его в analyzers разделе индекса во время разработки, а затем со ссылкой на него можно найти, Edm.String поля с помощью analyzer свойства или indexAnalyzersearchAnalyzer пары.

Определение анализатора включает в себя название, тип, один или несколько фильтров символов, не более одного создателя маркеров, а также один или несколько фильтров маркеров для обработки после создания маркера. Перед разметкой применяются фильтры символов. Фильтры маркеров и фильтры символов применяются слева направо.

  • Имена в пользовательском анализаторе должны быть уникальными и не могут совпадать со встроенными анализаторами, токенизаторами, фильтрами маркеров или фильтрами символов. Название должно содержать только буквы, цифры, тире или знаки подчеркивания. Оно может начинаться и заканчиваться только буквенно-цифровыми знаками, и его длина не должна превышать 128 знаков.

  • Тип должен быть #Microsoft.Azure.Search.CustomAnalyzer.

  • charFilters может быть одним или несколькими фильтрами из фильтров символов, обработанных до токенизации, в указанном порядке. Некоторые фильтры символов имеют параметры, которые можно задать в charFilters разделе. Фильтры символов необязательны.

  • tokenizer — это ровно один токенизатор. Необходимо указывать значение. Если вам нужно больше токенизаторов, создайте несколько пользовательских анализаторов и в схеме индекса назначьте каждому полю по одному анализатору.

  • tokenFilters может быть одним или несколькими фильтрами из фильтров маркеров, обработанных после токенизации, в указанном порядке. Для фильтров маркеров, имеющих параметры, добавьте раздел, чтобы указать tokenFilter конфигурацию. Фильтры маркеров необязательны.

Длина создаваемых анализаторами маркеров не должна превышать 300 символов, иначе индексирование завершится ошибкой. Чтобы обрезать длинные маркеры или исключить их, используйте параметры TruncateTokenFilter или LengthTokenFilter. Для справки см. раздел Фильтры маркеров.

"analyzers":(optional)[
   {
      "name":"name of analyzer",
      "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
      "charFilters":[
         "char_filter_name_1",
         "char_filter_name_2"
      ],
      "tokenizer":"tokenizer_name",
      "tokenFilters":[
         "token_filter_name_1",
         "token_filter_name_2"
      ]
   },
   {
      "name":"name of analyzer",
      "@odata.type":"#analyzer_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"charFilters":(optional)[
   {
      "name":"char_filter_name",
      "@odata.type":"#char_filter_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"tokenizers":(optional)[
   {
      "name":"tokenizer_name",
      "@odata.type":"#tokenizer_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"tokenFilters":(optional)[
   {
      "name":"token_filter_name",
      "@odata.type":"#token_filter_type",
      "option1":value1,
      "option2":value2,
      ...
   }
]

В определении индекса этот раздел можно разместить в любом месте текста запроса на создание индекса, но он обычно находится в конце.

{
  "name": "name_of_index",
  "fields": [ ],
  "suggesters": [ ],
  "scoringProfiles": [ ],
  "defaultScoringProfile": (optional) "...",
  "corsOptions": (optional) { },
  "analyzers":(optional)[ ],
  "charFilters":(optional)[ ],
  "tokenizers":(optional)[ ],
  "tokenFilters":(optional)[ ]
}

Определение анализатора является частью большого индекса. Определения фильтров char, маркеризаторов и фильтров маркеров добавляются в индекс только при настройке настраиваемых параметров. Чтобы использовать существующий фильтр или создатель маркеров "как есть", укажите его по имени в определении анализатора. Дополнительные сведения см. в разделе Создание индекса (REST). Дополнительные примеры см. в статье "Добавление анализаторов" в поиске ИИ Azure.

Проверка пользовательских анализаторов

Сведения о том, как анализатор разбивает текст на маркеры, см. в статье Анализатор теста (REST).

Запросить

  POST https://[search service name].search.windows.net/indexes/[index name]/analyze?api-version=[api-version]
    Content-Type: application/json
    api-key: [admin key]

  {
     "analyzer":"my_analyzer",
     "text": "Vis-à-vis means Opposite"
  }

Отклик

  {
    "tokens": [
      {
        "token": "vis_a_vis",
        "startOffset": 0,
        "endOffset": 9,
        "position": 0
      },
      {
        "token": "vis_à_vis",
        "startOffset": 0,
        "endOffset": 9,
        "position": 0
      },
      {
        "token": "means",
        "startOffset": 10,
        "endOffset": 15,
        "position": 1
      },
      {
        "token": "opposite",
        "startOffset": 16,
        "endOffset": 24,
        "position": 2
      }
    ]
  }

Обновление пользовательских анализаторов

После определения анализатора, токенизатора, фильтра маркеров или фильтра символов его нельзя изменить. Добавить новые определения в существующий индекс можно только в том случае, если в запросе на обновление индекса для флага allowIndexDowntime установлено значение true.

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

Эта операция переведет индекс в автономный режим на несколько секунд, что приведет к сбоям при выполнении индексирования и запросов. После обновления индекса его производительность и доступность для записи может быть снижена на несколько минут или дольше, если индекс очень большой. Эти последствия временны и проходят сами по себе.

Встроенные анализаторы

Если вы хотите использовать встроенный анализатор с пользовательскими параметрами, создание пользовательского анализатора — это способ, с помощью которого можно указать эти параметры. И наоборот, для использования встроенного анализатора "как есть" необходимо просто сослаться на него по его имени в определении поля.

Название анализатора Тип анализатора1 Описание и параметры
keyword (тип применяется только при наличии параметров) Обрабатывает все содержимое поля как один маркер. Это полезно для данных некоторых типов, таких как почтовые индексы, идентификаторы и названия продуктов.
pattern PatternAnalyzer Гибко разделяет текст на термины с помощью шаблона регулярного выражения.

Options (Параметры)

lowercase (тип: логическое значение) — определяет, являются ли термины строчными. Значение по умолчанию: true.

pattern (тип: строка) — шаблон регулярного выражения для сопоставления разделителей маркеров. Значение по умолчанию — \W+, которое соответствует символам, не образующим слова.

flags (тип: строка) — флаги регулярных выражений. Значением по умолчанию является пустая строка. Допустимые значения: CANON_EQ, CASE_INSENSITIVE, КОММЕНТАРИИ, DOTALL, ЛИТЕРАЛ, MULTILINE, UNICODE_CASE, UNIX_LINES

stopwords (тип: массив строк) — список стоп-слов. Значение по умолчанию — пустой список.
Простые (тип применяется только при наличии параметров) Разбивает текст по небуквенным знакам и преобразует его в нижний регистр.
standard
(также называется standard.lucene)
StandardAnalyzer Стандартный анализатор Lucene, состоящий из стандартного создателя маркеров, фильтра, преобразующего знаки в нижний регистр, и фильтра стоп-слов.

Options (Параметры)

maxTokenLength (тип: целое число) — максимальная длина маркера. Значение по умолчанию — 255. Маркеры, размер которых превышает максимальную длину, разделяются. Максимальная допустимая длина маркера — 300 знаков.

stopwords (тип: массив строк) — список стоп-слов. Значение по умолчанию — пустой список.
standardasciifolding.lucene (тип применяется только при наличии параметров) Стандартный анализатор с фильтром приведения к ASCII.
stop StopAnalyzer Разбивает текст по небуквенным знакам, применяет фильтр преобразования в знаки нижнего регистра и фильтр стоп-слов.

Options (Параметры)

stopwords (тип: массив строк) — список стоп-слов. Значение по умолчанию представляет собой стандартный список для английского языка.
whitespace (тип применяется только при наличии параметров) Анализатор, использующий создатель маркеров пробелов. Маркеры длиной более 255 знаков разделяются.

1 Типы анализаторов всегда префиксируются в коде таким #Microsoft.Azure.Search образом, что PatternAnalyzer фактически указывается как #Microsoft.Azure.Search.PatternAnalyzer. Мы удалили префикс для краткости, но он требуется в коде.

Обратите внимание, что параметр analyzer_type предоставляется только для анализаторов, которые можно настроить. Если нет параметров, как и в случае с анализатором ключевое слово, нет связанного типа #Microsoft.Azure.Search.

Фильтры символов

Фильтры символов добавляют обработку до достижения строки маркеризатора.

Поиск ИИ Azure поддерживает фильтры символов в следующем списке. Дополнительные сведения о каждом из них можно найти в справочнике по API Lucene.

Имя фильтра знаков Тип фильтра знаков1 Описание и параметры
html_strip (тип применяется только при наличии параметров) Фильтр знаков, который пытается удалить HTML-конструкции.
сопоставление MappingCharFilter Фильтр знаков, который применяет сопоставления, определенные в параметре сопоставлений. Сопоставление является каскадным (самое длинное сопоставление шаблона в заданной точке имеет приоритет). Замена может быть пустой строкой.

Options (Параметры)

сопоставления (тип: массив строк) — список сопоставлений следующего формата: a=>b (все вхождения символа a заменяются символом b). Обязательно.
pattern_replace PatternReplaceCharFilter Фильтр знаков, который заменяет знаки во входной строке. Он использует регулярное выражение, чтобы определить последовательности знаков, которые нужно сохранить, и шаблон замены, чтобы определить знаки для замены. Например, входной текст = , шаблон= aa bb aa bb(aa)\\\s+(bb) замена=$1#$2, результат = aa#bb aa#bb.

Options (Параметры)

pattern (тип: строка) — обязательный параметр.

replacement (тип: строка) — обязательный параметр.

1 Типы фильтров char всегда префиксируются в коде таким #Microsoft.Azure.Search образом, что MappingCharFilter фактически указывается как #Microsoft.Azure.Search.MappingCharFilter. Мы удалили префикс, чтобы уменьшить ширину таблицы, но не забудьте включить его в код. Обратите внимание, что параметр char_filter_type предоставляется только для фильтров, которые можно настроить. Если нет параметров, как и в случае с html_strip, нет связанного типа #Microsoft.Azure.Search.

Токенизаторы

Токенизатор делит непрерывный текст на последовательность маркеров, например разбиение предложения на слова или слово в корневые формы.

Поиск ИИ Azure поддерживает маркеризаторы в следующем списке. Дополнительные сведения о каждом из них можно найти в справочнике по API Lucene.

Имя создателя маркеров Тип создателя маркеров1 Описание и параметры
классическая ClassicTokenizer Создатель маркеров на основе грамматики, который подходит для обработки документов на большинстве европейских языков.

Options (Параметры)

maxTokenLength (тип: целое число) — максимальная длина маркера. По умолчанию: 255, максимальная: 300. Маркеры, размер которых превышает максимальную длину, разделяются.
edgeNGram EdgeNGramTokenizer Размечает входные данные с указанной стороны на N-граммы заданного размера.

Options (Параметры)

minGram (тип: целое число) — по умолчанию: 1, максимум: 300.

minGram (тип: целое число) — по умолчанию: 2, максимум: 300. Значение должно превышать minGram.

tokenChars (тип: массив строк) — классы знаков, которые нужно оставить в маркерах. Допустимые значения:
letter, digit, whitespace, punctuation, symbol. По умолчанию используется пустой массив — все знаки сохраняются.
keyword_v2 KeywordTokenizerV2 Выдает все входные данные в виде одного маркера.

Options (Параметры)

maxTokenLength (тип: целое число) — максимальная длина маркера. По умолчанию: 256, максимальная: 300. Маркеры, размер которых превышает максимальную длину, разделяются.
letter (тип применяется только при наличии параметров) Разбивает текст по небуквенным знакам. Маркеры длиной более 255 знаков разделяются.
lowercase (тип применяется только при наличии параметров) Разбивает текст по небуквенным знакам и преобразует его в нижний регистр. Маркеры длиной более 255 знаков разделяются.
microsoft_language_tokenizer MicrosoftLanguageTokenizer Разбивает текст на основе правил определенного языка.

Options (Параметры)

maxTokenLength (тип: целое число) — максимальная длина маркера, по умолчанию: 255, максимальная: 300. Маркеры, размер которых превышает максимальную длину, разделяются. Маркеры длиной более 300 знаков сначала разбиваются на маркеры длиной 300 знаков, а затем каждый из них разбивается на основе параметра maxTokenLength.

isSearchTokenizer (тип: логическое значение) — задайте значение true, если используется как создатель маркеров поиска, или false, если используется в качестве создателя маркеров индексации.

язык (тип: строка) — язык для использования, по умолчанию english. Допустимые значения:
bangla, bulgarian, catalan, chineseSimplified, chineseTraditional, croatian, czech, danish, dutch, english, french, german, greek, gujarati, hindi, icelandic, indonesian, italian, japanese, kannada, korean, malay, malayalam, marathi, norwegianBokmaal, polish, portuguese, portugueseBrazilian, punjabi, romanian, russian, serbianCyrillic, serbianLatin, slovenian, spanish, swedish, tamil, telugu, thai, ukrainian, urdu, vietnamese
microsoft_language_stemming_tokenizer MicrosoftLanguageStemmingTokenizer Разделяет текст с помощью правил, относящихся к языку, и сокращает количество слов к базовым формам. Этот токенизатор выполняет лемматизацию.

Options (Параметры)

maxTokenLength (тип: целое число) — максимальная длина маркера, по умолчанию: 255, максимальная: 300. Маркеры, размер которых превышает максимальную длину, разделяются. Маркеры длиной более 300 знаков сначала разбиваются на маркеры длиной 300 знаков, а затем каждый из них разбивается на основе параметра maxTokenLength.

isSearchTokenizer (тип: логическое значение) — задайте значение true, если используется как создатель маркеров поиска, или false, если используется в качестве создателя маркеров индексации.

язык (тип: строка) — язык для использования, по умолчанию english. Допустимые значения:
arabic, bangla, bulgarian, catalan, croatian, czech, danish, dutch, english, estonian, finnish, french, german, greek, gujarati, hebrew, hindi, hungarian, icelandic, indonesian, italian, kannada, latvian, lithuanian, malay, malayalam, marathi, norwegianBokmaal, polish, portuguese, portugueseBrazilian, punjabi, romanian, russian, serbianCyrillic, serbianLatin, slovak, slovenian, spanish, swedish, tamil, telugu, turkish, ukrainian, urdu
nGram NGramTokenizer Размечает входные данные на N-граммы заданного размера.

Options (Параметры)

minGram (тип: целое число) — по умолчанию: 1, максимум: 300.

minGram (тип: целое число) — по умолчанию: 2, максимум: 300. Значение должно превышать minGram.

tokenChars (тип: массив строк) — классы знаков, которые нужно оставить в маркерах. Допустимые значения: letter, , digitwhitespace, symbolpunctuation. По умолчанию используется пустой массив — все знаки сохраняются.
path_hierarchy_v2 PathHierarchyTokenizerV2 Создатель маркеров для иерархий в виде пути. Options (Параметры)

delimiter (тип: строка). Значение по умолчанию: '/.

replacement (тип: строка) — если задано, заменяет знак-разделитель. Значение по умолчанию соответствует значению параметра delimiter.

maxTokenLength (тип: целое число) — максимальная длина маркера. По умолчанию: 300, максимум: 300. Пути длиннее, чем значение maxTokenLength, игнорируются.

reverse (тип: логическое значение) — если задано значение true, создает маркер в обратном порядке. По умолчанию: false.

skip (тип: логическое значение) — начальные маркеры, которые следует пропустить. По умолчанию установлено значение 0.
pattern PatternTokenizer Этот создатель маркеров использует сопоставление шаблонов регулярных выражений для создания различных маркеров.

Options (Параметры)

pattern (тип: строка) — шаблон регулярного выражения для соответствия разделителям токенов. Значение по умолчанию — \W+, которое соответствует символам, не образующим слова.

flags (тип: строка) — флаги регулярных выражений. Значением по умолчанию является пустая строка. Допустимые значения: CANON_EQ, CASE_INSENSITIVE, КОММЕНТАРИИ, DOTALL, ЛИТЕРАЛ, MULTILINE, UNICODE_CASE, UNIX_LINES

group (тип: целое число) — указывает группу, которую нужно извлекать в маркеры. Значение по умолчанию: "-1" (разделение).
standard_v2 StandardTokenizerV2 Разбивает текст по правилам сегментации текста в формате Юникод.

Options (Параметры)

maxTokenLength (тип: целое число) — максимальная длина маркера. По умолчанию: 255, максимальная: 300. Маркеры, размер которых превышает максимальную длину, разделяются.
uax_url_email UaxUrlEmailTokenizer Размечает URL-адреса и сообщения электронной почты как один маркер.

Options (Параметры)

maxTokenLength (тип: целое число) — максимальная длина маркера. По умолчанию: 255, максимальная: 300. Маркеры, размер которых превышает максимальную длину, разделяются.
whitespace (тип применяется только при наличии параметров) Разбивает текст по пробелам. Маркеры длиной более 255 знаков разделяются.

1 Типы маркеризатора всегда префиксируются в коде таким #Microsoft.Azure.Search образом, что ClassicTokenizer фактически указывается как #Microsoft.Azure.Search.ClassicTokenizer. Мы удалили префикс, чтобы уменьшить ширину таблицы, но не забудьте включить его в код. Обратите внимание, что параметр tokenizer_type предоставляется только для создателей маркеров, которые можно настроить. Если нет параметров, как и в случае с токенизатором букв, нет связанного типа #Microsoft.Azure.Search.

Фильтры токенов

Фильтр токенов используется для фильтрации или изменения токенов, созданных токенизатором. Например, вы можете указать специальный фильтр, который преобразует все символы в нижний регистр. Пользовательский анализатор может содержать несколько фильтров токенов. Фильтры маркеров выполняются в том порядке, в котором они перечислены.

В таблице ниже для фильтров маркеров, реализованных с помощью Apache Lucene, приведены ссылки на документацию по API Lucene.

Имя фильтра маркеров Тип фильтра маркеров1 Описание и параметры
arabic_normalization (тип применяется только при наличии параметров) Фильтр маркеров, применяющий нормализатор арабского языка для нормализации орфографии.
apostrophe (тип применяется только при наличии параметров) Удаляет все знаки после апострофа (включая сам апостроф).
asciifolding AsciiFoldingTokenFilter Преобразует буквенные, числовые и символьные символы Юникода, которые не являются первыми 127 символами ASCII ( Basic Latin блок Юникода) в эквиваленты ASCII, если он существует.

Options (Параметры)

preserveOriginal (тип: логическое значение) — если значение равно true, сохраняется исходный маркер. Значение по умолчанию — false.
cjk_bigram CjkBigramTokenFilter Формирует биграммы терминов ККЯ, создаваемых с помощью StandardTokenizer.

Options (Параметры)

ignoreScripts (тип: массив строк) — сценарий, который следует игнорировать. Допустимые значения: han, hiragana, katakanahangul. Значение по умолчанию — пустой список.

outputUnigrams (тип: логическое значение) — задайте значение true, если нужно всегда выводить и униграммы, и биграммы. Значение по умолчанию — false.
cjk_width (тип применяется только при наличии параметров) Нормализует различия в ширине ККЯ. Преобразовывает полноширинные варианты ASCII в эквивалентные знаки основной латиницы, а варианты полуширинной катаканы в эквивалентные знаки обычной японской азбуки.
классическая (тип применяется только при наличии параметров) Удаляет английские притяжательные местоимения и точки из аббревиатур.
common_grams CommonGramTokenFilter Создает биграммы для часто встречающихся терминов при индексировании. Отдельные термины также индексируются с наложением биграмм.

Options (Параметры)

commonWords (тип: массив строк) — набор распространенных слов. Значение по умолчанию — пустой список. Обязательно.

ignoreCase (тип: логическое значение) — если значение равно true, сопоставление выполняется без учета регистра. Значение по умолчанию — false.

queryMode (тип: логическое значение) — создает биграммы, а затем удаляет распространенные слова и отдельные термины, за которыми следует распространенное слово. Значение по умолчанию — false.
dictionary_decompounder DictionaryDecompounderTokenFilter Разбивает составные слова, распространенные во многих германских языках.

Options (Параметры)

wordList (тип: массив строк) — список слов для сопоставления. Значение по умолчанию — пустой список. Обязательно.

minWordSize (тип: int) — только слова дольше, чем это будет обработано. Значение по умолчанию равно 5.

minSubwordSize (тип: int) — только вложенные слова дольше, чем это будет выводиться. Значение по умолчанию равно 2.

maxSubwordSize (тип: int) — только вложенные слова короче, чем это будет выводиться. Значение по умолчанию — 15.

onlyLongestMatch (тип: логическое значение) — в выходные данные добавляется только самое длинное соответствующее подслово. Значение по умолчанию — false.
edgeNGram_v2 EdgeNGramTokenFilterV2 Генерирует N-граммы заданного размера, начиная с начала или конца входного маркера.

Options (Параметры)

minGram (тип: целое число) — по умолчанию: 1, максимум: 300.

maxGram (тип: целое число) — по умолчанию: 2, максимум 300. Значение должно превышать minGram.

side (тип: строка) — указывает, с какой стороны входных данных следует создавать N-грамму. Допустимые значения: front, back
elision ElisionTokenFilter Удаляет элизии. Например, l'avion (плоскость) преобразуется в avion (плоскость).

Options (Параметры)

articles (тип: массив строк) — набор статей, которые следует удалить. Значение по умолчанию — пустой список. Если список статей не задан, по умолчанию удаляются все французские статьи.
german_normalization (тип применяется только при наличии параметров) Нормализует немецкие знаки в соответствии с эвристикой морфологического алгоритма German2 snowball.
hindi_normalization (тип применяется только при наличии параметров) Нормализует текст на хинди, чтобы удалить некоторые различия в орфографических вариациях.
indic_normalization IndicNormalizationTokenFilter Нормализует представление текста в Юникоде на индийских языках.
keep KeepTokenFilter Фильтр маркеров, который сохраняет только маркеры с текстом, содержащимся в указанном списке слов.

Options (Параметры)

keepWords (тип: массив строк) — список слов, которые следует оставить. Значение по умолчанию — пустой список. Обязательно.

keepWordsCase (тип: логическое значение) — если значение равно true, сначала все слова преобразуются в нижний регистр. Значение по умолчанию — false.
keyword_marker KeywordMarkerTokenFilter Помечает термины как ключевые слова.

Options (Параметры)

keywords (тип: массив строк) — список слов, которые следует пометить как ключевые. Значение по умолчанию — пустой список. Обязательно.

ignoreCase (тип: логическое значение) — если значение равно true, сначала все слова преобразуются в нижний регистр. Значение по умолчанию — false.
keyword_repeat (тип применяется только при наличии параметров) Выдает каждый входящий маркер дважды: сначала в качестве ключевого слова, а затем — не ключевого.
kstem (тип применяется только при наличии параметров) Высокопроизводительный kstem фильтр для английского языка.
length LengthTokenFilter Удаляет слишком длинные или слишком короткие слова.

Options (Параметры)

min (тип: целое число) — минимальное число. По умолчанию: 0, максимум: 300.

max (тип: целое число) — максимальное число. По умолчанию: 300, максимум: 300.
limit Microsoft.Azure.Search.LimitTokenFilter Ограничивает количество маркеров при индексировании.

Options (Параметры)

maxTokenCount (тип: целое число) — максимальное количество маркеров, которые следует создать. Значение по умолчанию — 1.

consumeAllTokens (тип: логическое значение) — нужно ли использовать все маркеры из входных данных, даже если достигнуто значение maxTokenCount. Значение по умолчанию — false.
lowercase (тип применяется только при наличии параметров) Нормализует текст в маркере в нижний регистр.
nGram_v2 NGramTokenFilterV2 Создает N-граммы заданного размера.

Options (Параметры)

minGram (тип: целое число) — по умолчанию: 1, максимум: 300.

maxGram (тип: целое число) — по умолчанию: 2, максимум 300. Значение должно превышать minGram.
pattern_capture PatternCaptureTokenFilter Использует регулярные выражения Java для создания нескольких маркеров: по одному для каждой группы записи в одном или нескольких шаблонах.

Options (Параметры)

patterns (тип: массив строк) — список шаблонов для сопоставления с каждым маркеров. Обязательно.

preserveOriginal (тип: логическое значение) — задайте значение true, чтобы вернуть исходный маркер, даже если один из шаблонов совпадает (значение по умолчанию: true).
pattern_replace PatternReplaceTokenFilter Фильтр маркеров, который применяет шаблон к каждому маркеру в потоке, заменяя соответствующие вхождения указанной строкой замены.

Options (Параметры)

pattern (тип: строка) — обязательный параметр.

replacement (тип: строка) — обязательный параметр.
persian_normalization (тип применяется только при наличии параметров) Применяет нормализацию для персидского языка.
phonetic PhoneticTokenFilter Создает маркеры для фонетических совпадений.

Options (Параметры)

encoder (тип: строка) — фонетический кодировщик, который следует использовать. Допустимые значения: metaphone, doubleMetaphonecaverphone2soundexnysiiscolognerefinedSoundexcaverphone1, koelnerPhonetik, . haasePhonetikbeiderMorse По умолчанию: metaphone. "metaphone".

Дополнительные сведения см. здесь.

replace (тип: логическое значение) — true, если закодированные маркеры должны заменить оригинальные маркеры, false, если они должны быть добавлены как синонимы. Значение по умолчанию: true.
porter_stem (тип применяется только при наличии параметров) Преобразует поток маркеров в соответствии с алгоритмом стемминга (поиска основы слова) Портера.
reverse (тип применяется только при наличии параметров) Обращает порядок строки маркера.
scandinavian_normalization (тип применяется только при наличии параметров) Нормализует использование взаимозаменяемых скандинавских знаков.
scandinavian_folding (тип применяется только при наличии параметров) Сворачивать скандинавские символы åÅäæÄÆв a и öÖøØв o. Он также дискриминирует использование двойных гласныхaa, ae, aooe иoo, оставляя только первый.
shingle ShingleTokenFilter Создает сочетания маркеров в виде одного маркера.

Options (Параметры)

maxShingleSize (тип: целое число). Значение по умолчанию: 2.

minShingleSize (тип: целое число). Значение по умолчанию: 2.

outputUnigrams (тип: логическое значение) — если значение равно true, выходной поток содержит входные маркеры (униграммы), а также объединения. Значение по умолчанию: true.

outputUnigramsIfNoShingles (тип: логическое значение) — если значение равно true, переопределяет поведение outputUnigrams. Значение false следует использовать, когда объединения недоступны. Значение по умолчанию — false.

tokenSeparator (тип: строка) — строка, используемая при соединении соседних маркеров для формирования объединения. По умолчанию используется одно пустое пространство .

filterToken (тип: строка) — строка для вставки для каждой позиции, для которой нет маркера. Значение по умолчанию — _.
snowball SnowballTokenFilter Фильтр маркера Snowball.

Options (Параметры)

язык (тип: строка) — допустимые значения: armenian, basquecatalandanishdutchenglishfinnishfrenchgermangerman2hungarianitaliankplovinsnorwegianporterportugueseromanianrussianspanishswedishturkish
sorani_normalization SoraniNormalizationTokenFilter Нормализует представление текста в Юникоде Sorani .

Options (Параметры)

Нет.
stemmer StemmerTokenFilter Языковой стемминговый фильтр.

Options (Параметры)

язык (тип: строка) — допустимые значения включают:
- arabic
- armenian
- basque
- brazilian
- bulgarian
- catalan
- czech
- danish
- dutch
- dutchKp
- english
- lightEnglish
- minimalEnglish
- possessiveEnglish
- porter2
- lovins
- finnish
- lightFinnish
- french
- lightFrench
- minimalFrench
- galician
- minimalGalician
- german
- german2
- lightGerman
- minimalGerman
- greek
- hindi
- hungarian
- lightHungarian
- indonesian
- irish
- italian
- lightItalian
- sorani
- latvian
- norwegian
- lightNorwegian
- minimalNorwegian
- lightNynorsk
- minimalNynorsk
- portuguese
- lightPortuguese
- minimalPortuguese
- portugueseRslp
- romanian
- russian
- lightRussian
- spanish
- lightSpanish
- swedish
- lightSwedish
- turkish
stemmer_override StemmerOverrideTokenFilter Любые словарные однокоренные термины помечаются как ключевые слова, что предотвращает морфологический поиск по цепочке. Необходимо поместить перед всеми стемминговыми фильтрами.

Options (Параметры)

правила (тип: строковый массив) — правила stemming в следующем формате word => stem , например ran => run. Значение по умолчанию — пустой список. Обязательно.
stopwords StopwordsTokenFilter Удаляет стоп-слова из потока маркеров. По умолчанию фильтр использует стандартный список стоп-слов для английского языка.

Options (Параметры)

stopwords (тип: массив строк) — список стоп-слов. Невозможно указать, если указан стоп-список слов.

stopwordsList (тип: строка) — стандартный список стоп-слов. Невозможно указать, если stopwords задано значение. Допустимые значения:arabic , armenianspanishfrenchfinnishenglishdutchgaliciandanishczechcatalangermanbulgarianbrazilianbasquegreekhindinorwegianlatvianpersianitalianportugueseirishromanianrussianindonesianhungarianswedishthaisoraniturkishпо умолчанию. english Невозможно указать, если stopwords задано значение.

ignoreCase (тип: логическое значение) — если значение равно true, сначала слова преобразуются в нижний регистр. Значение по умолчанию — false.

removeTrailing (тип: логическое значение) — если значение равно true, последний поисковый термин игнорируется, если это стоп-слово. Значение по умолчанию: true.
synonym SynonymTokenFilter Сопоставляет одно-или многословные синонимы в потоке маркеров.

Options (Параметры)

synonyms (тип: массив строк) — обязательный параметр. Список синонимов в одном из следующих двух форматов.

-невероятные, невероятные, сказочные => удивительные - все термины на левой стороне => символ заменяются всеми терминами на правой стороне.

"incredible, unbelievable, fabulous, amazing" — список эквивалентных слов, разделенных запятыми. Установите параметр expand, чтобы изменить способ интерпретации этого списка.

ignoreCase (тип: логическое значение) — меняет регистр входных данных для сопоставления. Значение по умолчанию — false.

expand (тип: bool) — если значение true, все слова в списке синонимов (если => нотация не используется) сопоставляются друг с другом.
Следующий список: невероятный, невероятный, сказочный, удивительный эквивалент: невероятный, невероятный, сказочный, удивительный,> невероятный, сказочный, удивительный, удивительный

- Если ложь, следующий список: невероятный, невероятный, сказочный, удивительный эквивалент: невероятные, невероятные, сказочные, удивительные => невероятные.
trim (тип применяется только при наличии параметров) Усекает пробел в начале и конце маркеров.
truncate TruncateTokenFilter Усекает термины до определенной длины.

Options (Параметры)

length (тип: целое число) — по умолчанию: 300, максимум: 300. Обязательно.
unique UniqueTokenFilter Отфильтровывает маркеры с тем же текстом, что и в предыдущем маркере.

Options (Параметры)

onlyOnSamePosition (тип: логическое значение) — если указано, удаляет дубликаты только в той же позиции. Значение по умолчанию: true.
uppercase (тип применяется только при наличии параметров) Нормализует текст в маркере в верхний регистр.
word_delimiter WordDelimiterTokenFilter Разделяет слова на подслова и выполняет необязательные преобразования в группах подслов.

Options (Параметры)

generateWordParts (тип: bool) — приводит к созданию частей слов, например AzureSearchAzureSearch. Значение по умолчанию: true.

generateNumberParts (тип: логическое значение) — создает определенное число подслов. Значение по умолчанию: true.

catenateWords (тип: bool) — приводит к тому, что максимальное количество запусков элементов слова будет сокращено, например Azure-Search становится AzureSearch. Значение по умолчанию — false.

catenateNumbers (тип: bool) — приводит к тому, что максимальное число частей будет сокращено, например 1-2 становится 12. Значение по умолчанию — false.

catenateAll (тип: bool) — приводит ко всем подсловным Azure-Search-1 частям, например, становится AzureSearch1. Значение по умолчанию — false.

splitOnCaseChange (тип: bool) — если значение true, разбивает слова на caseChange, например AzureSearch становится AzureSearch. Значение по умолчанию: true.

preserveOriginal — сохраняет изначальные слова и добавляет их в список подслов. Значение по умолчанию — false.

splitOnNumerics (тип: bool) — если значение true, разделяется на числа, например Azure1Search становится Azure1Search. Значение по умолчанию: true.

stemEnglishPossessive (тип: bool) — приводит к удалению конечных 's элементов для каждого подсловия. Значение по умолчанию: true.

protectedWords (тип: массив строк) — маркеры, которые следует защитить от разделения. Значение по умолчанию — пустой список.

1 Типы фильтров маркеров всегда префиксируются в коде таким #Microsoft.Azure.Search образом, что ArabicNormalizationTokenFilter фактически указывается как #Microsoft.Azure.Search.ArabicNormalizationTokenFilter. Мы удалили префикс, чтобы уменьшить ширину таблицы, но не забудьте включить его в код.

См. также