我正在使用具有以下搜索参数的最新Microsoft.Azure.Search
SDK。我有 MFR-1、MFR-2、MFR-3 等过滤器 ID。 我正在尝试带回任何具有以 MFR 开头的过滤器 ID 的记录。
似乎这应该是简单的查询,但我没有找到一种方法来使其与 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"
],
}
我已经尝试过这个,但它似乎不适用于标题所暗示的数组。
在 Azure 搜索中包含/在数组中(预览版(
根据我的理解,您正在寻找一种过滤器表达式,可以过滤其FilterIDs
字符串集合(数组(包含以"MFR"开头的项目值的所有记录。
正如官方文件所示:
字符串集合的 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 ....
我认为这将是一个解决方法,它对我有用. 希望对您有所帮助。