Faceted navigation in eCommerce allows customers the ability to refine down a catalog of products based on their filter criteria.
In order to define facets against a document, you must first register the facet group. This should be done within the boot() method of a ServiceProvider or the setup() method of a module ServiceProvider.
\Aero\Search\FacetSettings::registerFacet('stock', 'Stock Status');
The document structure can then be extended to add the facet to the document’s data.
\Aero\Search\Elastic\Documents\ListingDocument::add('string-facets', function ($document) {
$stock = $document->getModel()->availableStock() > 0;
return [
\Aero\Search\Elastic\Facet::create('stock', 'Stock Status', (int) $stock, $stock ? 'In-stock' : 'Out of stock'),
];
});
Re-index the documents after any modifications to the document structure.