Azure Cognitive Search使用GeographyPoint字段报错问题咨询
问题原因及解决方法
- 报错核心原因:GeographyPoint类型字段不能被标记为可搜索(Searchable)。Azure Cognitive Search中仅字符串或字符串集合类型字段支持可搜索配置,GeographyPoint属于空间数据类型,仅支持过滤、排序、地理空间查询,不支持全文搜索。你用
[SearchableField]特性标记该字段,会强制要求字段类型为字符串类,与GeographyPoint类型冲突,导致索引创建失败。
修正后的字段定义方案
直接使用[SimpleField]特性,明确指定字段类型为Edm.GeographyPoint,同时开启支持的过滤和排序属性:
[SimpleField(IsFilterable = true, IsSortable = true, Type = SearchFieldType.GeographyPoint)] public GeographyPoint geoPoint { get; set; }
也可以用[Field]特性做等价配置:
[Field(IsFilterable = true, IsSortable = true, Type = SearchFieldType.GeographyPoint)] public GeographyPoint geoPoint { get; set; }
验证说明
修正字段定义后,调用CreateOrUpdateIndex即可正常创建索引,你原有的GeographyPoint初始化代码无需修改:
double lat = ... double lng = ... doc.geoPoint = GeographyPoint.Create(lat, lng);
内容的提问来源于stack exchange,提问作者oct
相关产品推荐
相关产品推荐

