Я использую API предварительного просмотра сложных типов Azure Search (2017-11-11-Preview) для фильтрации / огранки сложных типов. Все мои фильтры и фасеты создаются на свойствах вложенного типа (не корневого типа) и выглядят так, как будто они не объединяются на правильном уровне вложенности, а только через корень документа.
Например, у меня есть следующий документ в поисковом индексе
{
apartmentComplexId: "1",
apartmentTypes: [
{
bedroomCount: 1,
bathroomCount: 2
},
{
bedroomCount: 2,
bathroomCount: 3
}
]
}
apartmentTypes.bedroomCount
и apartmentTypes.bathroomCount
огранены и отфильтрованы. Фасетный результат для набора данных вернет
{
"apartmentTypes/bedroomCount": [
{
"count": 1,
"value": 1
},
{
"count": 1,
"value": 2
}
],
"apartmentTypes/bathroomCount": [
{
"count": 1,
"value": 2
},
{
"count": 1,
"value": 3
}
]
}
Когда я выполняю следующий запрос:
$filter=apartmentTypes/any(x: x/bedroomCount eq 1)&facet=apartmentTypes/bathroomCount
моя коллекция фасетов в ответ содержит все два возможных значения фасетов для bathroomCount - 2 и 3 со значением 1 для каждого из них.
{
"apartmentTypes/bathroomCount": [
{
"count": 1,
"value": 2
},
{
"count": 1,
"value": 3
}
]
}
Следующим шагом я пытаюсь использовать данные фасетов в моем более конкретном фильтре
$filter=apartmentTypes/any(x: x/bedroomCount eq 1 and x/bathroomCount eq 3)
Упс, у меня есть пустой набор результатов.
Я понимаю, что более правильная строка фильтра должна выглядеть примерно так:
$filter=apartmentTypes/any(x: x/bedroomCount) and values/any(x: x/bathroomcount eq 3)
но мне нужна именно такая функциональность - найденный объект должен содержать элемент в своей коллекции со всеми побочными результатами.