【问题标题】:How to use Azure Search Service with heterogenous data sources如何将 Azure 搜索服务用于异构数据源
【发布时间】:2021-03-01 13:47:02
【问题描述】:

我之前曾在 Azure 搜索服务上工作过,我在 Azure 门户中直接在 SQL DB 上创建了一个索引器。

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

我应该怎么做呢?我假设我可能必须创建一个通用架构,并且每当用户搜索某些内容时,我都会调用这 3 个 API 并获取结果,将它们映射到一个通用架构,然后将通用架构中的这些数据索引到 Azure 搜索索引中。最后,调用此 Azure 搜索 API 将结果返回给调用者。

如果有任何帮助,我将不胜感激!如果我能获得更好的文档来完成这项工作,那也很棒。

【问题讨论】:

    标签: azure azure-cognitive-search


    【解决方案1】:

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

    【讨论】:

    • 我应该如何着手实施统一的解决方案?如果有好的文档,我将不胜感激。
    【解决方案2】:

    这真的取决于你所说的正确排序是什么意思。 X 队应该能够看到 Y 队和 Z 队的结果吗?获得这样的排名结果的唯一方法是使用包含来自所有团队的数据的通用架构维护单个索引。

    这种方法的一个潜在缺陷是架构中的冲突。例如,如果一个团队要求一个字段具有特定的数据类型或使用特定的分析器,而另一个团队有不同的要求。我们在索引中执行此操作,但会仔细选择一些公共字段,然后根据我们自己的命名约定为专用字段添加前缀以避免冲突。

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

    因此,为每个团队创建单独的索引有其好处。每个团队都可以拥有自己的架构而不会发生冲突,并且他们可以在不影响其他团队的情况下重置索引。

    【讨论】:

    • 只有一个团队,即一种类型的用户。我想你误解了一点。我的意思是我有一个问题,我想从多个数据源中吸收结果。为此,我只需要一个搜索索引。这个搜索索引应该在这些数据源的结果上,以便我得到的搜索结果对最终用户正确排序/排名。问题是我所说的这些数据源是搜索 API 本身。我的用户类型不超过一种,我不希望某些用户可以访问数据。
    • 我从研究中发现没有更好的方法可以做到这一点。 MS Search 正在研究一个我可以使用的解决方案:docs.microsoft.com/en-us/microsoftsearch/connectors-overview 我认为这可能是我正在寻找的解决方案。
    猜你喜欢
    • 2018-12-14
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多