【问题标题】:Azure Search vs Azure DocumentDBAzure 搜索与 Azure DocumentDB
【发布时间】:2017-06-16 00:31:34
【问题描述】:

我知道以前有人问过这个问题,但我找到的答案并没有解决我的问题。

我们将 azure 搜索用于需要分析文本的场景和仅对静态数据应用过滤器的场景。即,如果您在 azure 搜索中有一个仅包含类别和价格的产品详细信息存根,则用户可以在特定价格范围内找到特定类别,而无需进行任何文本分析。对于此类场景,是 DocumentDB 更快还是 Azure Search。

如果需要分面,DocumentDB 是否还提供与 Azure 搜索分面一样高效的工具(分面或分组依据)?

是否有任何方法可以访问在 Azure 搜索中编入索引的唯一术语。例如,如果 London, England 被索引为 London 和 England,我们可以通过查找索引并获得唯一的术语 London 和 England。

此外,我们是否可以将任何元数据附加到术语中,以便我们可以识别术语 London 是一个城市,而 England 是一个国家/地区的名称。

非常感谢

【问题讨论】:

    标签: azure-cosmosdb azure-cognitive-search


    【解决方案1】:

    一般来说,如果您只需要制定结构化查询,Cosmos DB(DocumentDB 的演变)是一个自然的选择。它在一致性模型方面具有更大的灵活性(例如,如果您想立即读取自己的写入内容,这将使您的应用程序更容易),不需要模式,具有更灵活的查询等(也就是说,它是通用的数据库而不是像搜索引擎这样的特定领域的数据库)

    如果您需要结构化查询和搜索式查询,Azure 搜索通常可以同时处理这两种查询。如果您的应用程序可以容忍 Azure 搜索的较弱一致性模型,并且您不需要任何可以由 Cosmos DB 表达但无法在 Azure 搜索中表达的查询,则您可以将 Azure 搜索用于此工作负载的两个方面。

    如果需要分面,DocumentDB 是否也提供该功能

    Cosmos DB 确实支持聚合,您可以在此处阅读更多相关信息: https://azure.microsoft.com/en-us/blog/planet-scale-aggregates-with-azure-documentdb/?v=17.23h

    除非您拥有庞大的数据/查询量,否则性能更多的是取决于您提供了多少容量,而不是您选择的服务所固有的东西。也就是说,Cosmos DB 在读写延迟方面提供了严格的 SLA。

    有什么方法可以访问 Azure 搜索中索引的唯一术语

    这似乎是一个不同的主题,如果您需要更多细节,也许可以开始另一个问题。简短的版本是没有办法访问实际的术语字典。如果您需要知道存在哪一组术语,有时您可以通过将您关心的所有术语(可能是总数的一个子集)存储在每个文档的 Collection(String) 字段中来完成此操作,然后对其进行分面。

    【讨论】:

    • 感谢您的回复。我们谈论 Azure 搜索的延迟有多大。毫秒,秒?我上面提到的元数据呢!
    • 这在很大程度上取决于查询的类型和数据集的性质。我们的大多数客户会看到 10 秒或 100 毫秒的延迟,但我们确实看到查询需要几秒钟的场景,因为它们的复杂性、他们需要的查询时间数据处理量等。关于元数据,我们没有一种将属性附加到术语的方法。您可以玩一些技巧,例如为术语添加后缀,但您必须确保在索引和查询时都添加后缀,以确保您继续查找术语。
    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2022-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    相关资源
    最近更新 更多