Поиск Azure декодирует содержимое файла base64 для индекса - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь использовать поиск Azure в контейнере больших двоичных объектов, который содержит тонну файлов .htm.Каждый из этих файлов полностью закодирован в base64 с отступом.Одним из этих файлов может быть «example.htm», и если вы откроете его, вы увидите:

//This decodes to html
PCEtLSBBIHNlZ21lbnQgb2YgYSBzd2VldCBib2R5IC0tPg0KPGRpdiBjbGFzcz0iYS1uaWNlLWNsYXNzIiBpZD0iaW1tYS1pZCI+DQoJPHA+Q2F0J3MgYXJlIGhhcmQgdG8gZGVjb2RlPC9wPg0KPC9kaXY+

Я попытался добавить отображение поля для декодирования этого в моем индексаторе.Если я установлю «useHttpServerUtilityUrlTokenDecode»: true , то получу «Ошибка применения функции сопоставления base64Decode к полю« NAME »: массив не может быть нулевым. \ R \ nПараметр имени: байты». и если я установлю его на false , то никакие файлы не будут проиндексированы, даже если он говорит "успех".

{
"name":"demoindexer", 
"dataSourceName" : "demodata",
"targetIndexName" : "demoindex",
"fieldMappings" : [
    {
      "sourceFieldName" : "content",
      "targetFieldName" : "content",
      "mappingFunction" : 
        { "name" : "base64Decode", "parameters" : { 
        "useHttpServerUtilityUrlTokenDecode" : false } }
    }
],
"parameters":
{
  "maxFailedItems":-1,
  "maxFailedItemsPerBatch":-1
}
}

Кажется, что подсказка может быть примечанием к сопоставлениям полейстраница для Azure, где говорится, что для « Base64-кодирования с заполнением используйте безопасные для URL символы и удалите заполнение путем дополнительной обработки после кодирования библиотеки ».Я не уверен, что это можно сделать с помощью API поиска Azure, и если да, то как это сделать или же просто сказать, что перед загрузкой в ​​хранилище Azure кодируют иначе.

Как мне поступить с декодированием?содержимое этих файлов для моего индекса, чтобы результаты поиска не возвращали строки base64?

1 Ответ

0 голосов
/ 18 мая 2018

Если я правильно понимаю вашу ситуацию, ваши BLOB-объекты содержат только кодированный в base64 текст.Если это так, вы должны использовать режим синтаксического анализа text, чтобы сохранить текст как есть, чтобы его можно было декодировать.См. Индексирование простого текста .

После того, как вы измените свой индексатор для использования режима разбора текста, не забудьте сбросить для индексатора, чтобы он начал индексировать ваши BLOB-объекты с нуля.Это необходимо, потому что ранее индексатор пропускал большие двоичные объекты, поскольку вы установили "maxFailedItems" : -1.

...