Как сказано в заголовке, я пытаюсь проиндексировать XML-файлы из хранилища BLOB-объектов с помощью индексатора, однако проиндексированные файлы по-прежнему содержат разметку XML, а не анализируются и удаляются из тегов.
Следующий XML - это пример XML-кода, который я пытаюсь проиндексировать:
<article xmlns="http://ournamespace.com/ns/test" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Lorem ipsum</title>
<section>
<para> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. (<link xlink:href="f8c79a4d-f1f1-4d8d-ab4c-d9317754465e"> Ut enim ad minim veniam</link>). quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</para>
</section>
<section>
<title>
<emphasis role="strong"> Duis aute irure dolor in reprehenderit in voluptate velit esse</emphasis>
</title>
<itemizedlist mark="square">
<listitem>
<para>
<link xlink:href="d1cce80e-835f-4b37-892e-54bba282f437">cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt</link> in culpa qui officia deserunt mollit anim id est laborum. </para>
</listitem>
</itemizedlist>
</section>
</article>
Я убедился, что тип содержимого большого двоичного объекта - application/xml
, а режим анализа индексатора - default
, поскольку я читал в этот вопрос, что это очень важно для правильного анализа документа.
Это конфигурация индексатора:
{
"@odata.context": "https://<redacted>.search.windows.net/$metadata#indexers/$entity",
"@odata.etag": "\"0x8D7D7C7CF735BF4\"",
"name": "azureblob-indexer",
"description": "",
"dataSourceName": "blob-indexer",
"skillsetName": null,
"targetIndexName": "<redacted>-index",
"disabled": null,
"schedule": null,
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"base64EncodeKeys": null,
"configuration": {
"dataToExtract": "contentAndMetadata",
"parsingMode": "default"
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_path",
"targetFieldName": "metadata_storage_path",
"mappingFunction": {
"name": "base64Encode"
}
},
{
"sourceFieldName": "Subscriptions",
"targetFieldName": "Subscriptions",
"mappingFunction": {
"name": "jsonArrayToStringCollection"
}
}
],
"outputFieldMappings": [],
"cache": null
}
В проиндексированном документе отображаются следующие метаданные, которые я считаю странными, поскольку content_type внезапно меняется с одного типа на другой. Я предполагаю, что это означает, что для этого документа использовался режим анализа text
?
{
"metadata_storage_content_type": "application/xml",
"metadata_content_encoding": "UTF-8",
"metadata_content_type": "text/plain; charset=UTF-8"
}
Это информация об одном из индексируемых BLOB-объектов:
LAST MODIFIED 4/2/2020, 3:28:13 PM
CREATION TIME 4/2/2020, 3:28:13 PM
TYPE Block blob
SIZE 27.94 KiB
ACCESS TIER Hot (Inferred)
ACCESS TIER LAST MODIFIED N/A
SERVER ENCRYPTED true
ETAG 0x8D7D709B1C7C5D5
CONTENT-TYPE application/xml
CONTENT-MD5 3yeFKKcSGh/6DJawrAWaWg==
LEASE STATUS Unlocked
LEASE STATE Available
LEASE DURATION -
COPY STATUS -
COPY COMPLETION TIME -
Любая помощь будет принята с благодарностью, и я, конечно, готов предоставить дополнительную информацию, если это необходимо. заранее спасибо!
<title>
, он также возвращает контент, хотя я ожидал, что это не вернет результат после ссылки на вышеупомянутую статью. Также было бы очень хорошо, если бы контент был лишен тегов, поскольку мы индексируем около пары тысяч статей, каждая из которых может легко содержать 2000 слов, и, таким образом, это сэкономит много места. Я подумал о некоторых обходных путях, таких как сохранение двух копий в BLOB-объекте, например, с тегами и без тегов, но я бы предпочел, чтобы индексатор позаботился об этом. - person Thavinc   schedule 06.04.2020