Apache-Solr
view release on metacpan or search on metacpan
t/12facet.t view on Meta::CPAN
#!/usr/bin/env perl
# Test decoding the complex Facet structure.
# Try all examples from http://wiki.apache.org/solr/SimpleFacetParameters
use warnings;
use strict;
use lib 'lib';
use Apache::Solr::XML;
use Log::Report 'try';
use Test::More tests => 17;
use Data::Dumper;
$Data::Dumper::Indent = 1;
$Data::Dumper::Quotekeys = 0;
# the server will not be called in this script.
my $server = 'http://localhost:8080/solr';
my $core = 'my-core';
my $solr = Apache::Solr::XML->new(server => $server, core => $core);
ok(defined $solr, 'instantiated client');
sub decode_xml($)
{ my $xml = shift;
my $tree = $solr->xmlsimple->XMLin($xml);
Apache::Solr::XML::_cleanup_parsed($tree);
}
sub check_get($$$)
{ my ($url, $params, $test) = @_;
# take the parameters from the url
$url =~ s/.*\?//;
my @url = map { split /\=/, $_, 2 } split /\&/, $url;
s/\+/ /g,s/%([a-zA-Z0-9]{2})/chr hex $1/ge for @url;
# the order may be important, but ignored for these tests
my $expanded = $solr->expandSelect(%$params);
#warn Dumper \@url, $expanded;
is_deeply({@url}, {@$expanded}, $test);
}
### Facet Fields
check_get
"$server/select?q=ipod&rows=0&facet=true&facet.limit=-1&facet.field=cat&facet.field=inStock",
{ q => 'ipod', rows => 0
, facet => { limit => -1, field => [ qw/cat inStock/ ] }
}, 'example 1 get';
my $f1 = <<'_FACET_FIELDS1';
<response>
<responseHeader><status>0</status><QTime>2</QTime></responseHeader>
<result numFound="4" start="0"/>
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="cat">
<int name="search">0</int>
<int name="memory">0</int>
<int name="graphics">0</int>
<int name="card">0</int>
<int name="music">1</int>
<int name="software">0</int>
<int name="electronics">3</int>
<int name="copier">0</int>
( run in 2.556 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )