Vista de cerca de binoculares sobre una superficie con reflejo del atardecer en las lentes.

Laravel Scout con filtros de facetas de Typesense

Explorador de Laravel proporciona una forma conveniente de integrar la funcionalidad de búsqueda en su aplicación, pero al usar Typesense, es posible que observe que las facetas no están incluidas en el método de búsqueda predeterminado.

Este artículo demuestra cómo agregar correctamente filtros de facetas a sus búsquedas de Typesense en Laravel Scout.

Implementación básica

Aquí hay una implementación simplificada que muestra cómo agregar facetas a su búsqueda de Laravel Scout con Typesense usando el método crudo:

public function index() { // Comience con una consulta de búsqueda básica $query = Product::search('my searchterm'); // Prepare las condiciones del filtro $filterBy = []; // Por ejemplo, precio mayor a 100 o su propio filtro personalizado $filterBy[] = 'price:>=100'; // Aplique opciones específicas de Typesense si lo desea $query->options([ 'query_by' => 'name', 'filter_by' => implode(' && ', $filterBy), 'facet_by' => 'brand,category,price', // Solicite estas facetas a Typesense, asegúrese de que estén disponibles 'sort_by' => $request->input('sort_by', 'relevance:desc') ]); // Obtener resultados paginados $results = $query->paginate(24); // Agregar recuentos de facetas a los resultados paginados $results->facetCounts = $this->getFacets($query); return $results; } /** * Obtener facetas de los resultados de búsqueda de Typesense */ private function getFacets($query) { $raw = $query->raw(); return $raw['facet_counts'] ?? []; }

🤓😎 Cada vez más personas reciben nuestros consejos sobre Geek, Privacidad, Desarrollo y Estilo de Vida.

¿Quieres recibir las últimas novedades de los blogs sobre tecnología, privacidad, desarrollo y estilo de vida? Suscríbete a nuestro boletín.

Opcional: Reformateo de facetas para facilitar su uso

También puedes reformatear las facetas para que sea más fácil trabajar con ellas en tu aplicación:

/** * Reformatear facetas de Typesense para un uso más sencillo * * @param array $facets Los recuentos de facetas sin procesar de 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 [ 'valor' => $item['valor'], 'count' => $item['count'] ]; }); $result[$fieldName] = $counts; } return $result; }

Uso de las facetas en su aplicación

Para utilizar las facetas reformateadas, simplemente modifique el método de búsqueda anterior:

// Obtener resultados paginados $results = $query->paginate(24); // Obtener recuentos de facetas sin procesar de Typesense $facets = $query->raw()['facet_counts'] ?? []; // Agregar facetas reformateadas a los resultados paginados $results->facetCounts = $this->reformatFacets($facets); return $results;

Puntos clave para recordar

  • Utilice el faceta_por Opción para especificar para qué campos desea facetas
  • Acceda a los datos de facetas sin procesar de la consulta de búsqueda con $query->raw()['cuenta_caras']
  • Considere reformatear las facetas para que sea más fácil trabajar con ellas en su aplicación.
  • Adjunte las facetas a sus resultados paginados para que sean accesibles en sus vistas

Al implementar estas técnicas, puede agregar fácilmente potentes capacidades de filtrado por facetas a su aplicación Laravel con Typesense, lo que permite a los usuarios refinar sus resultados de búsqueda mediante varios criterios.

Última actualización: 3 de marzo de 2025

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol
Ir arriba