Solr-facet.pl

From PTAGISWiki

Jump to: navigation, search
#!/usr/bin/perl -w

use XML::Simple;
use XML::Parser;
use LWP::Simple;
use Data::Dumper;


# build query

my $query = &buildquery("rday");

# get response

my $content = get($query);
#$content =~ s/<\?xml version="1.0" encoding="UTF-8"\?>//;
my $parser = XML::Parser->new( ErrorContext => 2);
eval { $parser->parse($content); };

if ($@ ) {
        print "error: $@\n";
} else {
        print "well-formed\n";
}

#print "$content\n";

# display response
my $xmlcontent = XMLin($content);

# time to process query
print "time to process query: " . $xmlcontent->{'lst'}->{'responseHeader'}->{'int'}->{'QTime'}->{'content'} . "\n";

# number of results returned
print "number of results found: " . $xmlcontent->{'result'}->{'numFound'} . "\n";;

# facet counts for file extension facet
my $counts = $xmlcontent->{'lst'}->{'facet_counts'}->{'lst'}->{'facet_fields'}->{'lst'}->{'extension'}->{'int'};
foreach $key ((sort by_count (keys %$counts))[0..9]) {
        my $value = $counts->{$key}->{'content'};
        next unless ($value > 0);
        print "$key: " . $value . "\n";
}

# facet counts for file uid facet
$counts = $xmlcontent->{'lst'}->{'facet_counts'}->{'lst'}->{'facet_fields'}->{'lst'}->{'uid'}->{'int'};
foreach $key ((sort by_count (keys %$counts))[0..9]) {
        my $value = $counts->{$key}->{'content'};
        next unless ($value > 0);
        print "$key: " . $value . "\n";
}

#print Dumper($xmlcontent->{'lst'}->{'facet_counts'}->{'lst'}->{'facet_fields'}->{'lst'}->{'extension'}->{'int'}->{'txt'});



exit;

################ subroutines below #####################3

sub by_count {
        $counts->{$b}->{'content'} <=> $counts->{$a}->{'content'};
}

sub buildquery {
# a query should look something like this:
#http://snapper.psmfc.org:8983/solr/select/?
#  &fl=*,score
#  &q=rday
#  &facet=true
#  &facet.field=extension
#  &facet.field=uid
#  &facet.field=mtime
#  &facet.query=mtime:[* TO 2000-01-01T00:00:00Z]
#  &facet.query=mtime:[2000-01-01T00:00:00Z TO 2002-01-01T00:00:00Z]
#  &facet.query=mtime:[2002-01-01T00:00:00Z TO *]
   my $host = "http://snapper.psmfc.org";
        my $port = ":8983";
        my $query = shift;
        my $fields = "&fl=*,score";
        my $facetactive = "&facet=true";
        my $facetfields = 
                "&facet.field=uid" . 
                "&facet.field=extension" ;
   my $mtimeranges = 
                "&facet.query=mtime:[* TO 2000-01-01T00:00:00Z]" .
                "&facet.query=mtime:[2000-01-01T00:00:00Z TO 2002-01-01T00:00:00Z]" .
                "&facet.query=mtime:[2002-01-01T00:00:00Z TO *]" ;

   return 
                $host . 
                $port . 
                "/solr/select/?q=" . $query . 
                $fields . 
                $facetactive . 
                $facetfields .
                $mtimeranges;
}
Personal tools