我想使用 Azure AI 搜索对存储在 Azure Blob 存储中的 JSON 文档进行全文搜索。除了嵌套 JSON 数组的字段映射之外,一切都工作正常。下面是我正在使用的 JSON 文档的结构
{
"conversation": {
"datetime": "2023-11-27T09:45:00",
"userDetails": {
"userId": "98765",
"username": "ProjectPro"
},
"messages": [
{
"sender": "user",
"message": "Good morning! I have a question about the upcoming project."
},
{
"sender": "assistant",
"message": "Good morning! I'm here to help. What do you need assistance with regarding the project?"
}
//Other messages...
]
}
}
我已将搜索索引配置为
{
"name": "conversation-index",
"fields": [
{"name": "datetime", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true, "facetable": false},
{"name": "userId", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": false},
{"name": "username", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": false},
{"name": "message", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false},
{"name": "sender", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": false, "facetable": false},
]
}
并配置搜索索引器如下
{
"name": "conversation-indexer",
"dataSourceName": "conversation-datasource",
"targetIndexName": "conversation-index",
"schedule": { "interval": "PT1H" },
"parameters": { "configuration": { "dataToExtract": "contentAndMetadata", "parsingMode": "json" } },
"fieldMappings": [
{"sourceFieldName": "/conversation/datetime", "targetFieldName": "datetime"},
{"sourceFieldName": "/conversation/userDetails/userId", "targetFieldName": "userId"},
{"sourceFieldName": "/conversation/userDetails/username", "targetFieldName": "username"},
{"sourceFieldName": "/conversation/messages[].message", "targetFieldName": "message"},
{"sourceFieldName": "/conversation/messages[].sender", "targetFieldName": "sender"}
]
}
message 和 sender 的索引器字段映射不起作用。搜索对这两个字段都返回 null。对嵌套 JSON 数组进行索引的正确方法是什么?
索引投影功能可以让您实现这一目标。