Azure Cognitive Search:基于Blob自定义publishDate元数据实现新鲜度评分提升
问题解答
关于你的两个方案可行性
- 方案1:不可行。Azure Blob存储的自定义元数据仅支持字符串类型,无法直接将publishDate设置为Edm.DateTimeOffset类型,所有自定义元数据字段都会以字符串形式存储。
- 方案2:不可行。Azure Cognitive Search的评分配置中,新鲜度评分(freshness)仅支持直接作用于Edm.DateTimeOffset类型的字段,不支持在评分逻辑内先将字符串转换为日期类型再应用评分规则。
可行的解决办法
方法1:通过索引器字段映射转换日期类型
- 修改你的Azure Cognitive Search索引,新增一个类型为
Edm.DateTimeOffset的字段(比如命名为publishDate_dt)。 - 在Blob索引器的字段映射中,添加转换规则,将字符串类型的publishDate元数据映射到新的日期字段。假设你的publishDate是ISO标准格式(如
"2024-05-20T12:00:00Z"),映射配置示例如下:
如果你的日期格式是非ISO标准,可调整{ "sourceFieldName": "metadata_custom_publishDate", "targetFieldName": "publishDate_dt", "mappingFunction": { "name": "convert", "parameters": { "type": "Edm.DateTimeOffset", "dateTimeStyles": "RoundtripKind" } } }dateTimeStyles参数(比如用AdjustToUniversal等)适配格式。 - 重新运行索引器,完成数据的重新导入与字段转换。
- 在评分配置中,针对
publishDate_dt字段设置新鲜度评分,示例配置:{ "name": "freshnessBoost", "functions": [ { "type": "freshness", "fieldName": "publishDate_dt", "boost": 8, "parameters": { "boostingDuration": "P180D" } } ] }
方法2:通过技能集处理复杂日期格式
如果你的publishDate格式多样,字段映射的convert函数无法解析,可以创建一个Azure Cognitive Search技能集,使用内置的日期识别技能或者自定义技能来解析字符串日期,将其转换为标准的Edm.DateTimeOffset格式后存入索引字段,之后再配置新鲜度评分。
内容的提问来源于stack exchange,提问作者frmrIntern
相关产品推荐
相关产品推荐

