Индексирование c HTML содержимого блоб-хранилища с помощью Azure Cognitive Search не работает должным образом - PullRequest
0 голосов
/ 07 января 2020

Я работаю над индексацией содержимого c HTML в хранилище BLOB-объектов. В документации говорится, что анализаторы предварительной обработки будут отбрасывать окружающие теги HTML при индексации содержимого из этого источника данных. Однако наше значение content всегда является целым необработанным документом HTML. Я также не могу извлечь значение наших тегов "meta description". Согласно документации по хранилищу индексированных блогов, содержимое HTML должно автоматически создавать свойство metadata_description, но это значение всегда равно нулю.

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

Все файлы в хранилище BLOB-объектов имеют расширение .html, и в столбце Тип содержимого отображается text/html.

Это конфигурация индексатора (некоторые биты ):

{
  "@odata.context": "https://<instance>.search.windows.net/$metadata#indexers/$entity",
  "@odata.etag": "\"<tag>\"",
  "name": "<name>",
  "description": null,
  "dataSourceName": "<datasource name>",
  "skillsetName": null,
  "targetIndexName": "<target index>",
  "disabled": null,
  "schedule": {
    "interval": "PT2H",
    "startTime": "0001-01-01T00:00:00Z"
  },
  "parameters": {
    "batchSize": null,
    "maxFailedItems": -1,
    "maxFailedItemsPerBatch": null,
    "base64EncodeKeys": null,
    "configuration": {
      "parsingMode": "text",
      "dataToExtract": "contentAndMetadata",
      "excludedFileNameExtensions": ".png .jpg .mpg .pdf",
      "indexedFileNameExtensions": ".html"
    }
  },
  "fieldMappings": [
    {
      "sourceFieldName": "metadata_storage_path",
      "targetFieldName": "id",
      "mappingFunction": {
        "name": "base64Encode",
        "parameters": null
      }
    },
    {
      "sourceFieldName": "metadata_description",
      "targetFieldName": "description",
      "mappingFunction": null
    },
    {
      "sourceFieldName": "metadata_storage_path",
      "targetFieldName": "url",
      "mappingFunction": {
        "name": "extractTokenAtPosition",
        "parameters": {
          "delimiter": "<delimiter>",
          "position": 1
        }
      }
    }
  ],
  "outputFieldMappings": [],
  "cache": null
}

1 Ответ

3 голосов
/ 07 января 2020

Вероятно, это связано с конфигурацией в вашем индексаторе "parsingMode": "text"

Этот режим анализа предназначен для извлечения буквенных текстовых значений из документов. В данном случае это включает все теги html.

Измените эту конфигурацию на «parsingMode»: «по умолчанию», чтобы убрать теги html из ваших документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...