From 4f8d628116b9c470c1d31148c2ec9954aeae4f4b Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 25 May 2010 20:05:36 +0200 Subject: [PATCH] speedup facets using stored filters --- lib/MojoFacets/Data.pm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/MojoFacets/Data.pm b/lib/MojoFacets/Data.pm index c75fde5..bf150ee 100644 --- a/lib/MojoFacets/Data.pm +++ b/lib/MojoFacets/Data.pm @@ -521,13 +521,20 @@ sub facet { my $all = $self->_perm_scalar('all', 1); - foreach my $i ( $self->_data_items($all) ) { - if ( ! exists $i->{$name} ) { + my $filter = $loaded->{$path}->{filters}->{$name}; + + my $data = $self->_loaded('data'); + foreach my $i ( 0 .. $#{ $data->{items} } ) { + if ( $filter && ! $all ) { + next unless defined $loaded->{$path}->{filters}->{$name}->{$i}; + } + my $item = $data->{items}->[$i]; + if ( ! exists $item->{$name} ) { $facet->{ _missing }++; - } elsif ( ref $i->{$name} eq 'ARRAY' ) { - $facet->{$_}++ foreach @{ $i->{$name} }; + } elsif ( ref $item->{$name} eq 'ARRAY' ) { + $facet->{$_}++ foreach @{ $item->{$name} }; } else { - $facet->{ $i->{$name} }++; + $facet->{ $item->{$name} }++; } } -- 2.20.1