diff options
Diffstat (limited to 'index-query.pl')
-rw-r--r-- | index-query.pl | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/index-query.pl b/index-query.pl new file mode 100644 index 0000000..8e44c25 --- /dev/null +++ b/index-query.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl +use strict; +use warnings; + +# Lucene stuff by Robin H. Johnson <robbat2@gentoo.org> + +use Lucene; +use Data::Dumper; + +my $analyzer = new Lucene::Analysis::Standard::StandardAnalyzer(); +my $store = Lucene::Store::FSDirectory->getDirectory("data", 0); +my $searcher = new Lucene::Search::IndexSearcher($store); +my $parser = new Lucene::QueryParser("filename", $analyzer); + +# The numeric range queries don't work quite as you expect +# They run as strings, not numerics presently "size:[0 TO 9000]" +# http://lucene.apache.org/java/docs/queryparsersyntax.html +my $query = $parser->parse("distfile:akode* AND filename:m* AND isdistfile:0"); +my $hits = $searcher->search($query); + +# get number of results + my $num_hits = $hits->length(); + + # get fields and ranking score for each hit + for (my $i = 0; $i < $num_hits; $i++) { + my $doc = $hits->doc($i); + my $score = $hits->score($i); + my $path = $doc->get("path"); + my $size = $doc->get("size"); + my $md5 = $doc->get("md5"); + printf "%s %s %d\n",$path,$md5,$size; + } + + # free memory and close searcher + undef $hits; + undef $query; + undef $parser; + undef $analyzer; + $searcher->close(); + undef $searcher; + undef $store; + + + |