Vista ravvicinata di un binocolo su una superficie con il riflesso del tramonto sulle lenti.

Laravel Scout con filtri Typesense Facet

Esploratore Laravel fornisce un modo pratico per integrare la funzionalità di ricerca nella tua applicazione, ma quando usi Typesense potresti notare che le sfaccettature non sono incluse nel metodo di ricerca predefinito.

Questo articolo spiega come aggiungere correttamente filtri a sfaccettature alle ricerche Typesense in Laravel Scout.

Implementazione di base

Ecco un'implementazione semplificata che mostra come aggiungere sfaccettature alla ricerca Laravel Scout con Typesense utilizzando metodo grezzo:

public function index() { // Inizia con una query di ricerca di base $query = Product::search('my searchterm'); // Prepara le condizioni del filtro $filterBy = []; // Ad esempio, prezzo maggiore di 100 o il tuo set di filtri personalizzato $filterBy[] = 'price:>=100'; // Applica le opzioni specifiche di Typesense se lo desideri $query->options([ 'query_by' => 'name', 'filter_by' => implode(' && ', $filterBy), 'facet_by' => 'brand,category,price', // Richiedi queste sfaccettature da Typesense, assicurati che siano disponibili 'sort_by' => $request->input('sort_by', 'relevance:desc') ]); // Ottieni risultati suddivisi in pagine $results = $query->paginate(24); // Aggiungi conteggi delle sfaccettature ai risultati suddivisi in pagine $results->facetCounts = $this->getFacets($query); return $results; } /** * Ottieni le sfaccettature dai risultati della ricerca Typesense */ private function getFacets($query) { $raw = $query->raw(); return $raw['facet_counts'] ?? []; }

🤓😎 Sempre più persone stanno ricevendo i nostri consigli su Geek, Privacy, Sviluppo e Stile di Vita

Vuoi ricevere gli ultimi blog su Geek, Privacy, Sviluppo e Lifestyle? Iscriviti alla nostra newsletter.

Facoltativo: riformattazione delle sfaccettature per un utilizzo più semplice

Puoi anche riformattare le sfaccettature per renderle più facili da usare nella tua applicazione:

/** * Riformatta le sfaccettature di Typesense per un utilizzo più semplice * * @param array $facets Conteggi delle sfaccettature non elaborate da Typesense * @return \Illuminate\Support\Collection */ private function reformatFacets(array $facets): \Illuminate\Support\Collection { $result = collect(); foreach ($facets as $facet) { $fieldName = $facet['field_name'] ?? null; if (!$fieldName) { continue; } $counts = collect($facet['counts'] ?? [])->map(function($item) { return [ 'value' => $item['value'], 'count' => $item['count'] ]; }); $result[$fieldName] = $counts; } restituisci $result; }

Utilizzo delle sfaccettature nella tua applicazione

Per utilizzare le sfaccettature riformattate, è sufficiente modificare il metodo di ricerca precedente:

// Ottieni risultati suddivisi in pagine $results = $query->paginate(24); // Ottieni conteggi delle sfaccettature grezze da Typesense $facets = $query->raw()['facet_counts'] ?? []; // Aggiungi sfaccettature riformattate ai risultati suddivisi in pagine $results->facetCounts = $this->reformatFacets($facets); return $results;

Punti chiave da ricordare

  • Utilizzare il sfaccettatura_per opzione per specificare per quali campi si desidera avere le sfaccettature
  • Accedi ai dati sfaccettati grezzi dalla query di ricerca con $query->raw()['conteggi_facet']
  • Prendi in considerazione la riformattazione delle sfaccettature per renderle più facili da usare nella tua applicazione
  • Allega le sfaccettature ai risultati impaginati in modo che siano accessibili nelle tue viste

Implementando queste tecniche, puoi facilmente aggiungere potenti funzionalità di filtro a sfaccettature alla tua applicazione Laravel con Typesense, consentendo agli utenti di perfezionare i risultati di ricerca in base a vari criteri.

Ultimo aggiornamento il 3 marzo 2025

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItaliano
Scorri verso l'alto