来自现有数据库的 Azure 搜索
Azure Search from existing database
我有一个现有的 SQL 服务器数据库,它使用全文搜索和语义搜索作为 UI 的主要搜索功能。搜索中使用的 table 包含大约 100 万行数据。
我正在考虑使用 Azure 搜索来替换它,但是我的数据库依赖于启用全文 table 的核心功能。我想对 "searching" 使用 Azure 搜索,但仍然有我当前的 table 结构,以便能够编辑记录并在找到某些内容时显示详细记录。
我的想法是:
- 创建 Azure 索引
- 将 SQL 服务器中启用全文 table 的所有可搜索数据推送到 Azure 搜索
- Azure 搜索 return 符合搜索条件的文档 ID
- 查询现有数据库以获取包含这些 ID 的行以显示在前端
- 当现有数据库中的某些数据发生变化时,在 Azure 搜索中安排更新以确保数据保持同步
这是一个好方法吗?如果您的现有数据位于本地数据库中,但您想利用 Azure 搜索,混合实施如何工作?
总的来说,你的做法似乎是合理的。一些可能有用的指示:
Azure SQL 现在支持全文搜索,因此如果迁移到 Azure SQL 是您的一个选项并且您仍想使用 Azure 搜索,您可以使用 Azure SQL indexer. Or you can run SQL Server on IaaS VMs and configure the indexer using the instructions here。
使用本地 SQL 服务器,您可以使用 Azure 数据工厂 sink for Azure Search 同步数据。
实际上我几乎完全经历了这个过程。我们使用不同的后端数据存储,而不是 SQL 服务器。
首先,我们编写了一个应用程序来同步所有现有数据。很简单。
对于添加的新文档,我们选择同步而不是异步同步到 Azure 搜索。我们做出这个选择是因为我们在添加和更新索引时测量了出色的性能。 50-200 毫秒响应时间,数十万条记录无故障。我们无法证明构建和维护工作人员、持久队列等的额外成本是合理的。警告:我们的 Web 服务与 Azure 搜索实例位于同一 Azure 区域。如果您的 SQL 服务器是本地服务器,您可能会遇到更长的延迟。
我们最终将大约 80% 的每条记录存储在 Azure 搜索中。显然,在 Azure 搜索中存储的越多,执行最坏情况序列的可能性就越小 "double query."
我有一个现有的 SQL 服务器数据库,它使用全文搜索和语义搜索作为 UI 的主要搜索功能。搜索中使用的 table 包含大约 100 万行数据。
我正在考虑使用 Azure 搜索来替换它,但是我的数据库依赖于启用全文 table 的核心功能。我想对 "searching" 使用 Azure 搜索,但仍然有我当前的 table 结构,以便能够编辑记录并在找到某些内容时显示详细记录。
我的想法是:
- 创建 Azure 索引
- 将 SQL 服务器中启用全文 table 的所有可搜索数据推送到 Azure 搜索
- Azure 搜索 return 符合搜索条件的文档 ID
- 查询现有数据库以获取包含这些 ID 的行以显示在前端
- 当现有数据库中的某些数据发生变化时,在 Azure 搜索中安排更新以确保数据保持同步
这是一个好方法吗?如果您的现有数据位于本地数据库中,但您想利用 Azure 搜索,混合实施如何工作?
总的来说,你的做法似乎是合理的。一些可能有用的指示:
Azure SQL 现在支持全文搜索,因此如果迁移到 Azure SQL 是您的一个选项并且您仍想使用 Azure 搜索,您可以使用 Azure SQL indexer. Or you can run SQL Server on IaaS VMs and configure the indexer using the instructions here。
使用本地 SQL 服务器,您可以使用 Azure 数据工厂 sink for Azure Search 同步数据。
实际上我几乎完全经历了这个过程。我们使用不同的后端数据存储,而不是 SQL 服务器。
首先,我们编写了一个应用程序来同步所有现有数据。很简单。
对于添加的新文档,我们选择同步而不是异步同步到 Azure 搜索。我们做出这个选择是因为我们在添加和更新索引时测量了出色的性能。 50-200 毫秒响应时间,数十万条记录无故障。我们无法证明构建和维护工作人员、持久队列等的额外成本是合理的。警告:我们的 Web 服务与 Azure 搜索实例位于同一 Azure 区域。如果您的 SQL 服务器是本地服务器,您可能会遇到更长的延迟。
我们最终将大约 80% 的每条记录存储在 Azure 搜索中。显然,在 Azure 搜索中存储的越多,执行最坏情况序列的可能性就越小 "double query."