Sou um pouco novo no sentido de digitação, mas o que quero fazer é pegar todas as categorias com a quantidade de produtos de cada categoria, acho que isso pode ser feito com o uso de facet, certo?
Digamos que meu esquema de documento de produto seja assim:
{
"name" : "products",
"fields" : [
{
"name" : "id",
"type" : "string"
},
{
"name": "name",
"type": "string"
},
{
"name": "categories",
"type": "object[]",
"facet": true,
"fields" : [
{
"name":"id",
"type": "string"
},
{
"name":"label",
"type": "string"
}
]
},
{
"name": "options",
"type": "string[]",
"facet": true
}
]
}
então aqui cada produto pode pertencer a uma ou várias categorias (se a categoria do produto pertencer for uma subcategoria, isso significa que o produto também pertence à categoria pai) e o categories
campo definido como facet
desejo obter todas as categorias com a quantidade de produtos em cada .
Quando estou executando uma consulta de pesquisa como esta:
client.collections('products').documents().search(
{
"q" : "*",
"facet_by" : "categories.id",
"per_page" : 0 # I do not need products just the facet part
}
)
O TypeSense retorna campos aleatórios de 9 facetas como este:
"facet_counts" => array:1 [
0 => array:4 [
"counts" => array:10 [
0 => array:3 [
"count" => 106581
"highlighted" => "ab58454c-def8-431f-ad78-b435e390d095"
"value" => "ab58454c-def8-431f-ad78-b435e390d095"
]
1 => array:3 [
"count" => 106580
"highlighted" => "1b4dfa36-c66d-4cc0-a61d-3fee6b878299"
"value" => "1b4dfa36-c66d-4cc0-a61d-3fee6b878299"
]
2 => array:3 [
"count" => 106550
"highlighted" => "fe1633c0-7cd6-4f7c-88ed-f6b9de34d94d"
"value" => "fe1633c0-7cd6-4f7c-88ed-f6b9de34d94d"
]
3 => array:3 [
"count" => 106547
"highlighted" => "9e794fee-b3fd-4f83-a41c-cbf629bec8cf"
"value" => "9e794fee-b3fd-4f83-a41c-cbf629bec8cf"
]
4 => array:3 [
"count" => 106543
"highlighted" => "b94f2647-f850-48b3-861e-d9fd97cfe577"
"value" => "b94f2647-f850-48b3-861e-d9fd97cfe577"
]
5 => array:3 [
"count" => 106542
"highlighted" => "96e281f4-3f63-411a-a517-0250e2491cf5"
"value" => "96e281f4-3f63-411a-a517-0250e2491cf5"
]
6 => array:3 [
"count" => 106530
"highlighted" => "455a8b50-2dc5-4683-837e-8119217b9ee1"
"value" => "455a8b50-2dc5-4683-837e-8119217b9ee1"
]
7 => array:3 [
"count" => 106523
"highlighted" => "7215ec95-db47-4c90-b915-349fa05191d1"
"value" => "7215ec95-db47-4c90-b915-349fa05191d1"
]
8 => array:3 [
"count" => 106507
"highlighted" => "59171caf-cc00-4b7b-92dd-0da54b925a95"
"value" => "59171caf-cc00-4b7b-92dd-0da54b925a95"
]
9 => array:3 [
"count" => 106506
"highlighted" => "4128454d-2c26-4ed4-b194-021426a5f99e"
"value" => "4128454d-2c26-4ed4-b194-021426a5f99e"
]
]
"field_name" => "categories.id"
"sampled" => false
"stats" => array:1 [
"total_values" => 1696
]
]
]
mas na coleção tem muito mais categorias, o que estou fazendo de errado? Como posso obter todas as categorias com quantidades de produtos ou não é possível com facetas?
UPD: Também tenho a opção de uma lista de IDs de filtros relacionados ao produto e quero uma consulta separada para fazer o mesmo (obter todos os filtros com quantidades de produtos). Provavelmente é outra história, apenas explicando por que ela está lá.