From 1aafaac1bd8f3172db42b6f4160e6663a6238758 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 8 Dec 2010 15:56:36 +0100 Subject: [PATCH] unroll arrays of hashes for indexing --- trigger/KinoSearch.pm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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); } } -- 2.20.1