当前位置: 首页 > 面试题库 >

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

郦何平
2023-03-14
问题内容

我有一个包含以下架构的数据库,该架构描述了与多个顾问联系的个人之间的链接,这些顾问与多个组织有联系

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

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

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将出现在多行中

当我搜索字符串时,我想确保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的数量,我将在进行不同的运算后得出结果

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

如果我要使用构面一起处理(a)和(b),如何确保排序基于构面中最佳的搜索分数文档


问题答案:

除非您对数据进行不同的建模,否则无法在单个请求中实现您想要的功能。可以不对个人顾问和顾问企业关系进行非规范化,而是可以使每个顾问拥有一个文档,并使用集合来存储有关个人和企业的信息。根据您是否需要对与Advisor相关的个人和企业支持相关过滤,这可能对您不起作用。有一个白皮书这里应该帮助您评估这种做法是否会为你工作。

另一种选择是将个人,顾问和企业建模为单独的索引,发出三个查询,并进行客户端联接。但是,这受到在个人和企业查询中需要发送的顾问ID数量的限制。Azure搜索对筛选器的大小有限制,除非查询的召回率较低,否则筛选器的大小将变得不切实际。

我们正在努力使Azure搜索更好地适合您的方案。例如,我们目前正在努力添加对复杂类型的支持。请对“用户语音”进行投票,并随时建议其他有用的功能。



 类似资料:
  • 如何获得空数组和美国的结果和

  • 我正在使用Cosmos DB,并有一个具有以下简化结构的文档: 我的问题是-我有一个这些文档的数组,需要搜索以查看它是否与我的搜索词匹配。例如,如果用户输入,我希望和都返回。 所以目前我将每个文档推送到一个数组中并执行以下操作: 每个文档的 、< code>id2和< code>id3。 使用cosmosDB,我使用SQL,代码如下: 这有效地将集合中的每个文档放入一个数组中,以手动执行上述搜索。

  • 我有一个弹性搜索索引集合,如下所示, 现在我需要通过将与其值匹配来搜索文档。(是一些字段,其值存储在中)例如。对于字段,如果它是,则应与上述文档匹配。 我尝试将其映射为嵌套对象,但我无法编写查询来搜索与其相应值匹配的2个或更多的键id。

  • 我需要以下问题的帮助。我有以下JSON:(https://pastecode.io/s/sg2kJB0PLD) 我需要通过使用Cosmos Db上的SQL查询来检查是否有任何建筑物的等级等于“F”。 任何资源都将不胜感激。 谢谢

  • 我试图为一个业务场景制定一个查询,其中我们有一个名为“types”的嵌套字段类型(即类似于字符串的ArrayList)。下面是以“类型”作为字段之一的索引文档示例。 文件1:{“类型”:[{“标签”:“对话”,},{“标签”:“暴力”,},{“标签”:“语言”,}} 文档2:{“类型”:[{“标签”:“对话框”,}} 现在,要求搜索查询最多匹配字段值中的一个值,即如果用户搜索“对话框”,那么它应该

  • 问题内容: 我正在使用Nest Elastic并使用Head插件为布尔搜索构建查询,我正在合并多个查询 有关数据库结构和弹性映射的注释 数据库中的每个文档都链接到特定的profileId,后者又具有多个属性 每个文档都有与其关联的多个属性值 在此查询中,我要获取具有特定配置文件和属性值> 30的所有文档,同时要记住,此属性应仅具有ID 2。 SQL查询: 从文档d内部联接attributeValu