我正在使用具有以下搜索参数的最新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"
],
}
我已经尝试过了,但似乎不像标题所示那样适用于数组。
据我所知,您正在寻找一个过滤器表达式,该过滤器表达式可以过滤所有其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 ....
我认为这是在这里的工作,对我而言这对我来说是有效的。希望能帮助到你。