在 Azure 搜索文档中使用枚举
Using Enums in Azure Search Documents
据我了解,如果您在搜索文档中有一个枚举,它将被转换为一个 int。除非我做错了什么,否则这似乎并没有发生,我能让它工作的唯一方法是将枚举转换为字符串。这似乎是错误的。有人可以告诉我我是否做错了什么,或者这是不可能的吗?
示例:
public enum WebSearchRecordType{
Unknown = 0,
Doc1 = 1,
Doc2 = 2
}
public class WebSearchDocument{
public Guid Id {get;set;}
public WebSearchRecordType RecordType { get; set; }
}
如果我在尝试创建索引时使用类似上面的内容,我会收到以下错误:
Message: "Property recordType has unsupported type
Web.Search.WebSearchRecordType\r\nParameter name: propertyType"
Azure 搜索不支持枚举类型作为字段类型。相反,您需要自己在枚举和一种受支持的数据类型之间进行映射(int 或 string,具体取决于您是否希望将标签或基础值存储在索引中)。实现此目的的一种方法是将您的枚举 属性 标记为 [JsonIgnore]
,然后实现所需字段类型的第二个 属性 并在它与 getter/setter 中的枚举之间进行映射。请注意,您可以控制 属性 名称如何映射到具有 [JsonProperty("...")]
属性的索引字段。
此外,您的模型 class 使用 Guid
作为键字段的类型。这也不支持。您可以使用相同的技术将您自己的 Guid
属性 映射到实际映射到相应索引字段的字符串 属性。
据我了解,如果您在搜索文档中有一个枚举,它将被转换为一个 int。除非我做错了什么,否则这似乎并没有发生,我能让它工作的唯一方法是将枚举转换为字符串。这似乎是错误的。有人可以告诉我我是否做错了什么,或者这是不可能的吗?
示例:
public enum WebSearchRecordType{
Unknown = 0,
Doc1 = 1,
Doc2 = 2
}
public class WebSearchDocument{
public Guid Id {get;set;}
public WebSearchRecordType RecordType { get; set; }
}
如果我在尝试创建索引时使用类似上面的内容,我会收到以下错误:
Message: "Property recordType has unsupported type Web.Search.WebSearchRecordType\r\nParameter name: propertyType"
Azure 搜索不支持枚举类型作为字段类型。相反,您需要自己在枚举和一种受支持的数据类型之间进行映射(int 或 string,具体取决于您是否希望将标签或基础值存储在索引中)。实现此目的的一种方法是将您的枚举 属性 标记为 [JsonIgnore]
,然后实现所需字段类型的第二个 属性 并在它与 getter/setter 中的枚举之间进行映射。请注意,您可以控制 属性 名称如何映射到具有 [JsonProperty("...")]
属性的索引字段。
此外,您的模型 class 使用 Guid
作为键字段的类型。这也不支持。您可以使用相同的技术将您自己的 Guid
属性 映射到实际映射到相应索引字段的字符串 属性。