【发布时间】:2018-10-31 04:33:47
【问题描述】:
我需要将多个表中的数据抓取到单个搜索索引中,但问题是一些所需的数据来自没有直接关系的表(例如,数据库中的任何关系都不是一对一的,提供示例DB的大致外观波纹管)。视图不是一个选项,因为它们的爬网超时(因为强制按条件排序)并且我无法更改表结构,是否有任何其他方法不创建具有扁平重复数据的表来传播索引?
【问题讨论】:
标签: azure search azure-cognitive-search
我需要将多个表中的数据抓取到单个搜索索引中,但问题是一些所需的数据来自没有直接关系的表(例如,数据库中的任何关系都不是一对一的,提供示例DB的大致外观波纹管)。视图不是一个选项,因为它们的爬网超时(因为强制按条件排序)并且我无法更改表结构,是否有任何其他方法不创建具有扁平重复数据的表来传播索引?
【问题讨论】:
标签: azure search azure-cognitive-search
没有其他办法;您需要对数据进行非规范化和展平以便索引到 Azure 搜索。
【讨论】:
您将无法使用 SQL 索引器,因为您不能使用视图并且 SQL 索引器不知道如何处理连接。您可以索引using the API 或SDK,但您需要将您的数据库架构与您的索引架构相协调。
对于使用 Azure 搜索的生产应用程序,我们建议按照here 的描述展平数据。假设索引中的每个文档都代表实体 X 的一个实例,这将涉及复制与多个 X 相关的用户。
另一个可能的选择是使用Complex Types,它目前是私人预览版。只要基数不太极端,这将允许您更自然地模拟一对多关系。例如,如果每个 X 有数百个但不是数千个用户,那么复杂类型可能是一个不错的选择。但是,由于多对多关系,它仍然需要复制用户。如果您有兴趣评估复杂类型,请参阅this User Voice post,了解有关如何加入私人预览版的说明。
【讨论】: