【问题标题】:Azure Search from existing database从现有数据库中搜索 Azure
【发布时间】:2017-04-27 23:25:26
【问题描述】:

我有一个现有的 SQL Server 数据库,它使用全文搜索和语义搜索作为 UI 的主要搜索功能。搜索中使用的表包含大约 100 万行数据。

我正在考虑使用 Azure 搜索来替换它,但是我的数据库依赖于启用全文的表来实现其核心功能。我想使用 Azure 搜索进行“搜索”,但仍保留我当前的表结构,以便能够编辑记录并在找到某些内容时显示详细记录。

我的想法是:

  1. 创建 Azure 索引
  2. 将所有可搜索数据从 SQL Server 中启用全文的表推送到 Azure 搜索
  3. Azure 搜索返回与搜索条件匹配的文档 ID
  4. 查询现有数据库以获取包含这些 ID 的行以显示在前端
  5. 当现有数据库中的某些数据发生更改时,请在 Azure 搜索中安排更新以确保数据保持同步

这是一个好方法吗?如果您的现有数据位于本地数据库中但您想利用 Azure 搜索,混合实现如何工作?

【问题讨论】:

    标签: sql-server azure search azure-cognitive-search


    【解决方案1】:

    总体而言,您的方法似乎是合理的。一些可能有用的指针:

    1. Azure SQL 现在支持全文搜索,因此如果您可以选择迁移到 Azure SQL 并且仍想使用 Azure 搜索,则可以使用 Azure SQL indexer。或者,您可以在 IaaS 虚拟机上运行 SQL Server 并使用说明 here 配置索引器。

    2. 借助本地 SQL Server,您或许可以使用 Azure 数据工厂sink for Azure Search 同步数据。

    【讨论】:

    • 感谢 Eugene,数据工厂看起来真的很有趣。
    【解决方案2】:

    我实际上刚刚经历了这个过程,几乎完全一样。我们使用的是不同的后端数据存储,而不是 SQL Server。

    首先,我们编写了一个应用程序来同步所有现有数据。很简单。

    对于添加的新文档,我们选择同步而不是异步同步到 Azure 搜索。我们做出这个选择是因为我们在添加和更新索引时测量了出色的性能。 50-200 毫秒的响应时间,数十万条记录无故障。我们无法证明构建和维护工作人员、持久队列等的额外成本是合理的。警告:我们的 Web 服务与 Azure 搜索实例位于同一 Azure 区域。如果您的 SQL Server 在本地,您可能会遇到更长的延迟。

    我们最终将大约 80% 的记录存储在 Azure 搜索中。显然,在 Azure 搜索中存储的内容越多,执行最坏情况的串行“双重查询”的可能性就越小。

    【讨论】:

    • 很高兴了解同步请求的性能
    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2016-03-22
    • 2013-02-09
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多