gpt4 book ai didi

azure - 创建允许按过滤器评分的 Azure 搜索文档架构

转载 作者:行者123 更新时间:2023-12-02 06:49:10 31 4
gpt4 key购买 nike

我的域对象如下:

 public class MainType { 
public int Id {get;set;}
public string Name {get;set;}

public List<TypeA> A_List {get;set;}
public List<TypeB> B_List {get;set;}

... other properties
}

public class TypeA {
public int Id {get;set;}
public string Name {get;set;}

... other properties
}

public class TypeAMapping {
public int TypeAId {get;set;}
public int MainTypeId {get;set;}
public int DisplayOrder {get;set;}
}


public class TypeB {
public int Id {get;set;}
public string Name {get;set;}

... other properties
}

public class TypeBMapping {
public int TypeBId {get;set;}
public int MainTypeId {get;set;}
public int DisplayOrder {get;set;}
}

Azure 搜索索引文档不支持复杂类型,因此我需要将所有这些类平铺到一个模型中,如 here 中所述。 。

所以,我创建了一个像这样的类:

 public class MainTypeDocumentModel { 
public int Id {get;set;}
public string Name {get;set;}

public List<string> A_Id_List {get;set;}
public List<string> A_Name_List {get;set;}
public List<string> A_DisplayOrder_List {get;set;}

public List<string> B_Id_List {get;set;}
public List<string> B_Name_List {get;set;}
public List<string> B_DisplayOrder_List {get;set;}

... other properties
}

问题是我还需要处理映射类的 DisplayOrder 属性。文档未涵盖其中内容。

我可以创建查询来搜索按 A_Id_List 和/或 B_Id_List 过滤的 MainTypeDocumentModel。但我需要使用文档的 X_DisplayOrder_List 属性中的值对文档进行排序(或得分更高)。

我检查了Scoring Profile来自 Microsoft 的文档,但无法弄清楚如何实现此场景。

最佳答案

听起来您想要的相当于嵌套 A 和 B 上的相关子查询。不幸的是,这在 Azure 搜索中目前是不可能的,因为它需要对复杂类型的内置支持。这是on our radar但目前还没有预计到达时间。

同时,您可以考虑将域类型建模为 Azure 搜索索引的其他方法。一种选择是完全非规范化;有一个 A 索引和一个 B 索引,并为 As 和 B 的每个组合重复 Id 和 Name。另一种选择是完全标准化;对于 MainType、A、B 以及它们之间的关系有单独的索引,并在客户端进行“连接”。根据您的查询模式和更新频率,需要进行权衡。 This thread MSDN 论坛上更详细地介绍了这些选项。

关于azure - 创建允许按过滤器评分的 Azure 搜索文档架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40004962/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com