分面搜索无法使用Š字符

时间:2016-09-21 15:14:21

标签: azure-search

我有一个包含一些随机汽车制作数据的Azure搜索索引。其中一个数据项目是针对斯柯达的,但它恰好以'Š'开头。

当我尝试将这些数据作为分面搜索进行查询时,我希望对这些数据进行排序。这是我的原型代码:

var queryResults = searchIndexClient.Documents
    .Search(
        string.Empty,
        new SearchParameters
        {
            Facets = new List<string>
            {
                "make,count:1000,sort:value"
            },
            Top = 0
    });

在返回的数据中,make确实是正确排序的,但是'Škoda'出现在列表的底部。所以我猜我需要做些什么才能让Azure Search在排序时处理unicode字符,但我不知道我需要做什么。

编辑:

我使用Postman查询serch索引,使用与上述相同的分面搜索参数:

docs?$select=make&facet=make,count:1000,sort:value

以下是返回的JSON的修剪子集,其中显示škoda出现在底部。请注意,在我们的测试数据中,列表中的skoda也是正确的 - 都出现在源索引数据中。

{
  "@search.facets": {
    "make@odata.type": "#Collection(Microsoft.Azure.Search.V2015_02_28.QueryResultFacet)",
    "make": [
      {
        "count": 178,
        "value": "rover"
      },
      {
        "count": 1,
        "value": "rover / austin"
      },
      {
        "count": 1,
        "value": "rover mg"
      },
      {
        "count": 529,
        "value": "saab"
      },
      {
        "count": 3835,
        "value": "seat"
      },
      {
        "count": 3851,
        "value": "skoda"
      },
      {
        "count": 817,
        "value": "smart"
      },
      {
        "count": 12934,
        "value": "volkswagen"
      },
      {
        "count": 3922,
        "value": "volvo"
      },
      {
        "count": 1,
        "value": "vw scirocco gti"
      },
      {
        "count": 1,
        "value": "w67 6olf"
      },
      {
        "count": 3,
        "value": "westfield"
      },
      {
        "count": 2,
        "value": "wiesmann"
      },
      {
        "count": 3,
        "value": "wolseley"
      },
      {
        "count": 1,
        "value": "zbmw"
      },
      {
        "count": 5,
        "value": "škoda"
      }
    ]
  }
}

1 个答案:

答案 0 :(得分:1)

不幸的是,这是Azure搜索中的一个已知限制。 facet的值使用二进制顺序排序。你观察到的奇怪,škoda出现在列表的底部,是预料之中的。我们计划在这种情况下采用更先进的校对算法,但还没有固定的日期。请通过user voice创建请求,帮助我们确定优先顺序。

此时,解决问题的唯一方法是预处理构面值并在列中存储规范化(已删除小写和变音符号)字符串。

对于给您带来的不便,我们深表歉意。我们会在取得进展后立即通知您。

感谢。

Nate