Azure搜索并在数组中使用带有-的结尾

问题描述 投票:0回答:1

我正在使用具有以下搜索参数的最新Microsoft.Azure.Search SDK。我有MFR-1,MFR-2,MFR-3等过滤器ID。我试图带回任何过滤器ID以MFR开头的记录。

看来这应该是简单的查询,但是我没有找到一种方法可以使它与SDK一起使用。

var Params = new SearchParameters()
{
    SearchMode = SearchMode.Any,
    QueryType = QueryType.Full,
    Top = 72,
    Skip = 0,
    IncludeTotalResultCount = true,
    Filter = "FilterIDs/any(c: c eq 'MFR-57')",
    OrderBy = new List<string> { "Sort", "Title"},
    Facets = new List<string>() { "Filters,count:500,sort:value" }
};

数据看起来像这样:

{
"id": "691",
"RecordType": "product",
"FilterIDs": [
    "MFR-106",
    "36-250",
    "36-265"
],
}

我已经尝试过了,但似乎不像标题所示那样适用于数组。

Contains / in array in Azure Search (Preview)

azure-search azure-search-.net-sdk
1个回答
0
投票

据我所知,您正在寻找一个过滤器表达式,该过滤器表达式可以过滤所有其FilterIDs字符串集合(数组)包含以“ MFR”开头的项目值的记录。

official doc所示:

在用于字符串集合的lambda表达式内,唯一的比较可以使用的运算符是eq和ne。

所以恐怕这里没有办法进行模糊搜索。

但是如果您的过滤器ID是可枚举的,也许您可​​以使用如下所示的过滤器表达:

FilterIDs/any(c: c eq 'MFR-1') or FilterIDs/any(c: c eq 'MFR-2') or FilterIDs/any(c: c eq 'MFR-3') or ....

我认为这是在这里的工作,对我而言这对我来说是有效的。希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.