如何将Azure搜索服务与异构数据源一起使用



我以前在Azure搜索服务上工作过,在那里我直接在Azure门户中的SQL DB上创建了索引器。

现在我有一个用例,我想从多个数据源中获取每个数据源都有不同的数据模式。假设这些数据源是X、Y、Z团队的3个搜索API。它们都采用搜索项,并以自己的模式返回结果。我希望我的Azure搜索服务是这些搜索的代理,这样我就有了一个搜索API,用户可以使用它从多个源获取结果,顺序正确

我该怎么做?我假设我可能必须创建一个公共架构,每当用户搜索某个东西时,我都会调用这3个API并获得结果,将它们映射到一个公共模式,然后将公共架构中的数据索引到Azure搜索索引中。最后,调用此Azure搜索API将结果返回给调用方。

如果有任何帮助,我将不胜感激!如果我能为这项工作找到更好的文档,那也太好了。

您的假设是正确的。您可以使用3个不同的索引并针对它们激发查询,也可以尝试将所有索引组合在同一索引中。第二种方法的好处是实现排序/分页的更好方法,因为所有信息都将存储在同一索引中。

这实际上取决于您所说的排序正确的含义。X队应该能够看到Y队和Z队的成绩吗?获得这样的排名结果的唯一方法是使用包含所有团队数据的通用模式来维护单个索引。

这种方法的一个潜在缺陷是模式中的冲突。例如,如果一个团队要求字段具有特定的数据类型或使用特定的分析器,而另一个团队则有不同的要求。我们在索引中这样做,但根据我们自己的命名约定,使用一些精心选择的公共字段和专用字段作为前缀,以避免冲突。

需要考虑的一件事是需要重置索引。如果需要添加、更改或删除字段,则必须删除索引,然后使用新架构重新创建索引。如果您有一个公共索引,而团队X需要添加一个新属性,则需要重置(删除和创建(影响所有团队的公共索引。

因此,为每个团队创建单独的索引是有好处的。每个团队都可以有自己的模式,而不会有冲突的风险,并且可以在不影响其他团队的情况下重置索引。

最新更新