Добавить стоп-слова в стандартный поисковый анализатор Azure?

Я использую анализатор en.microsoft в моем поисковом индексе Azure. По большей части это работает хорошо, но мне нужно добавить несколько специфичных для домена стоп-слов. Есть ли способ добавить стоп-слова в существующий анализатор? Или реализовать собственный анализатор, который наследует свое поведение от стандартного, и просто переопределить стоп-слова, оставив все остальное как есть?

1 ответ

Решение

Хотя вы не можете наследовать от существующего анализатора, вы можете создать пару пользовательских анализаторов (один для индексации и один для поиска), который функционально эквивалентен en.microsoft, но с вашим собственным списком стоп-слов. Вот как это будет выглядеть в полезной нагрузке определения индекса API REST:

{
  ...
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "my_search_analyzer",
      "tokenizer": "my_english_search_tokenizer",
      "tokenFilters": [ "my_asciifolding_search", "lowercase", "my_stopword_filter" ]
    },
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "my_index_analyzer",
      "tokenizer": "my_english_index_tokenizer",
      "tokenFilters": [ "my_asciifolding_index", "lowercase", "my_stopword_filter" ]
    }
  ],
  "tokenizers": [
    {
      "name": "my_english_search_tokenizer",
      "@odata.type": "#Microsoft.Azure.Search.MicrosoftLanguageStemmingTokenizer",
      "isSearchTokenizer": true,
      "language": "english"
    },
    {
      "name": "my_english_index_tokenizer",
      "@odata.type": "#Microsoft.Azure.Search.MicrosoftLanguageStemmingTokenizer",
      "isSearchTokenizer": false,
      "language": "english"
    }
  ],
  "tokenFilters": [
    {
      "name": "my_asciifolding_search",
      "@odata.type": "#Microsoft.Azure.Search.AsciiFoldingTokenFilter",
      "preserveOriginal": false
    },
    {
      "name": "my_asciifolding_index",
      "@odata.type": "#Microsoft.Azure.Search.AsciiFoldingTokenFilter",
      "preserveOriginal": true
    },
    {
      "name": "my_stopword_filter",
      "@odata.type": "#Microsoft.Azure.Search.StopwordsTokenFilter",
      "stopwords": [ "put", "your", "custom", "stopwords", "here" ]
    }
  ]
}
Другие вопросы по тегам