4

我的理解是,如果您在搜索文档中有一个枚举,它将被转换为一个 int。除非我做错了什么,否则这似乎不会发生,我可以让它工作的唯一方法是将枚举转换为字符串。这似乎是错误的。有人可以告诉我是我做错了什么还是这不可能?

例子:

public enum WebSearchRecordType{
    Unknown = 0,
    Doc1 = 1,
    Doc2 = 2
}

public class WebSearchDocument{
    public Guid Id {get;set;}
    public WebSearchRecordType RecordType { get; set; }
}

如果我在尝试创建索引时使用上述内容,则会收到以下错误:

消息:“属性记录类型具有不受支持的类型 Web.Search.WebSearchRecordType\r\n参数名称:propertyType”

4

1 回答 1

3

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

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

于 2017-05-31T21:34:25.087 回答