From: Dobrica Pavlinusic Date: Wed, 8 Dec 2010 14:56:36 +0000 (+0100) Subject: unroll arrays of hashes for indexing X-Git-Url: http://git.rot13.org/?p=angular-mojolicious.git;a=commitdiff_plain;h=1aafaac1bd8f3172db42b6f4160e6663a6238758 unroll arrays of hashes for indexing --- diff --git a/trigger/KinoSearch.pm b/trigger/KinoSearch.pm index d0ec50b..1d5f832 100644 --- a/trigger/KinoSearch.pm +++ b/trigger/KinoSearch.pm @@ -32,7 +32,8 @@ sub _indexer { sub flatten { my ($flat,$data,$prefix) = @_; if ( ref $data eq '' ) { - $$flat->{$prefix} = $data; + $$flat->{$prefix} .= "\n" . $data; + $$flat->{$prefix} =~ s/^\n//; # strip first } elsif ( ref $data eq 'HASH' ) { foreach my $key ( keys %$data ) { my $full_prefix = $prefix ? $prefix . '.' : ''; @@ -40,8 +41,13 @@ sub flatten { flatten( $flat, $data->{$key}, $full_prefix ); } } elsif ( ref $data eq 'ARRAY' ) { - $$flat->{$prefix} = join("\n", map { ref $_ ? dump($_) : $_ } @$data); - # FIXME arrays with non-scalar references aren't really indexed well + foreach my $el ( @$data ) { + flatten( $flat, $el, $prefix ); + } + } elsif ( ref $data eq 'Mojo::JSON::_Bool' ) { + $$flat->{$prefix} = $data; + } else { + die "unsupported ",ref($data)," from ",dump($data); } }