From PTAGISWiki
#!/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;
}