通过Edm.Int32和Collection(Edm.String)进行Azure搜索过滤性能

时间:2017-03-28 14:47:45

标签: azure faceted-search azure-search

我在我的电子商务网站上使用Azure搜索,现在想要实现过滤。

我遇到了性能方面的问题。我有产品索引。每个产品属于类别。每个类别都可以有嵌套的子类别。 我的业务目的是当客户在类别页面上时我需要显示甚至来自子类别的产品,所以我对如何在azure产品索引中存储这种关系(产品到类别)有疑问。 我正在考虑两种可能性:

  1. 我只能在类型为Edm.Int32的字段中存储产品类别ID。然后,当客户进入此类别时,我查询到我的sql server以获取所有子类别ID,然后将我的查询构造为像这样的索引
  2.   

    categoryId eq 34或categoryId eq 36或categoryId eq 37 ...

    1. 其他方法是创建类型为Collection(Edm.String)的字段,并在此字段中存储产品类别ID和嵌套类别ID,然后我的索引查询将如下所示
    2.   

      categoryIds / any(c:c eq'35')

      那么哪种方式会更快?

1 个答案:

答案 0 :(得分:1)

选项#2可能更快,因为索引中的文档数量会少得多,但唯一可以确定的方法是对数据和查询进行一些实验。整体查询性能将取决于其他因素,例如您是否正在进行全文搜索,分面,地理空间等。