代码之家  ›  专栏  ›  技术社区  ›  user7995357

Azure Search-复制嵌套SQL查询的结果

  •  1
  • user7995357  · 技术社区  · 8 年前

    我有一个数据库,包括以下模式,描述了与多个顾问联系的个人之间的联系,这些顾问与多个组织有关联

    Individuals--> Advisors (m:n relationship)
    Advisors --> Enterprises (m:n relationship)
    

    业务需求是启用对所有这些概念的搜索,并围绕AdvisorIds组织结果。例如,搜索结果的显示可以如下所示

    a) Advisor1-> connected to Individuals A,B,C; and linked to Enterprises X,Y
    
    b) Advisor2-> connected to Individuals A, E; and linked to Enterprises M,X,Z
    

    当我搜索字符串时,我想确保 全部 无论单个记录的搜索分数如何,AdvisorId周围的记录都将一起返回。

     a) first run an Azure Search and get a result of AdvisorId, ordered by search score of each record. This will repeat Advisor Ids
    
    b) take a distinct set of  AdvisorIds (across pages) via standard SQL
    
    c) for each AdvisorId, pick all the related records via standard SQL
    

    2个问题

    在这里,(b)和(c)中的许多处理将在Azure之外完成,从而导致延迟。此外,如果我对(a)使用分页,我永远不确定AdvisorId的数量,我在distinct操作之后得到

    我想检查一下是否有办法在Azure中实现嵌套搜索,以作为单个API调用执行(a)、(b)和(c)

    1 回复  |  直到 8 年前
        1
  •  1
  •   Bruce Johnston    8 年前

    除非以不同的方式对数据进行建模,否则无法在单个请求中实现所需的内容。与其对个人顾问和顾问企业关系进行非规范化,不如让每个顾问拥有一个文档,并使用集合来存储有关个人和企业的信息。这可能对您有效,也可能无效,这取决于您是否需要支持对与顾问相关的个人和企业进行相关过滤。有一份白皮书 here

    另一种选择可能是将个人、顾问和企业建模为单独的索引,发出三个查询,并进行客户端连接。但是,这受到您在查询个人和企业时需要发送的顾问ID数量的限制。Azure Search已 limits on the size of filters 除非您的查询具有较低的召回率,否则这可能会变得不切实际。

    我们正在努力使Azure Search更好地适用于像您这样的场景。例如,我们目前正在努力添加对的支持 complex types