Dancer-SearchApp
view release on metacpan or search on metacpan
lib/Dancer/SearchApp.pm view on Meta::CPAN
index => [ grep { /^\Q$index\E/ } sort keys %indices ],
body => {
foo => {
text => $q,
completion => {
field => 'title_suggest',
"fuzzy" => { "fuzziness" => 2 }, # edit distance of 2
}
}
#%suggest_query
}
);
#warn Dumper $results;
my %suggestions;
my @res = map {; +{
tokens => [split //, $_->{text}],
value => $_->{text},
url => $_->{_source}->{url},
} }
sort { $b->{_score} <=> $a->{_score} || $b cmp $a } # sort by score+asciibetically descending
map { $_->{options} ? @{ $_->{options} } : () } # unwrap again
map { @$_ } # unwrap
grep { ref $_ eq 'ARRAY' } values %$results
;
add_api_headers;
return \@res;
};
true;
__END__
=head1 SECURITY CONSIDERATIONS
=head2 Dancer::SearchApp
This web front end can serve not only the extracted content but also
the original files from your hard disk. Configure the file system crawler
to index only data that you are comfortable with sharing with whoever
gets access to the web server.
Consider making the web server only respond on requests originating from
127.0.0.1:
plackup --host 127.0.0.1 -p 8080 -Ilib -a bin\app.pl
=head2 Elasticsearch
Elasticsearch has a long history of vulnerabilities and has little to no
concept of information segregation. This basically means that anything that
can reach Elasticsearch can read all the data you stored in it.
Configure Elasticsearch to only respond to localhost or to queries from
within a trusted network, like your home network.
Note that leaking a copy of the Elasticsearch search index is almost as
bad as leaking a copy of the original data. This is especially true if you
look at backups.
=head1 REPOSITORY
The public repository of this module is
L<https://github.com/Corion/dancer-searchapp>.
=head1 SUPPORT
The public support forum of this module is
L<https://perlmonks.org/>.
=head1 TALKS
I've given a talk about this module at Perl conferences:
L<German Perl Workshop 2016, German|http://corion.net/talks/dancer-searchapp/dancer-searchapp.de.html>
L<Video on Youtube, German|https://www.youtube.com/watch?v=X4j5LgmfgZY>
L<YAPC::Europe 2016, Cluj, English|http://corion.net/talks/dancer-searchapp/dancer-searchapp.en.html>
L<Video on Youtube, English|https://www.youtube.com/watch?v=TXSM-Izmia8>
=for html
<iframe title="YouTube video player" class="youtube-player" type="text/html"
width="640" height="390" src="http://www.youtube.com/embed/TXSM-Izmia8"
frameborder="0" allowFullScreen></iframe>
=head1 BUG TRACKER
Please report bugs in this module via the RT CPAN bug queue at
L<https://rt.cpan.org/Public/Dist/Display.html?Name=Dancer-SearchApp>
or via mail to L<dancer-searchapp-Bugs@rt.cpan.org>.
=head1 AUTHOR
Max Maischein C<corion@cpan.org>
=head1 COPYRIGHT (c)
Copyright 2014-2016 by Max Maischein C<corion@cpan.org>.
=head1 LICENSE
This module is released under the same terms as Perl itself.
=cut
( run in 0.692 second using v1.01-cache-2.11-cpan-39bf76dae61 )