在 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"

A​​zure 搜索不支持枚举类型作为字段类型。相反,您需要自己在枚举和一种受支持的数据类型之间进行映射(int 或 string,具体取决于您是否希望将标签或基础值存储在索引中)。实现此目的的一种方法是将您的枚举 属性 标记为 [JsonIgnore],然后实现所需字段类型的第二个 属性 并在它与 getter/setter 中的枚举之间进行映射。请注意,您可以控制 属性 名称如何映射到具有 [JsonProperty("...")] 属性的索引字段。

此外,您的模型 class 使用 Guid 作为键字段的类型。这也不支持。您可以使用相同的技术将您自己的 Guid 属性 映射到实际映射到相应索引字段的字符串 属性。