Apache-Solr

 view release on metacpan or  search on metacpan

lib/Apache/Solr.pm  view on Meta::CPAN



use warnings;
use strict;

use Apache::Solr::Tables;
use Log::Report    qw/solr/;

use Scalar::Util   qw/blessed/;
use Encode         qw/encode/;
use Scalar::Util   qw/weaken/;

use URI            ();
use LWP::UserAgent ();
use MIME::Types    ();

use constant {
	LATEST_SOLR_VERSION => '9.8',  # newest support by this module
	ENETDOWN    => 100,   # error codes may not be available on all platforms
	ENETUNREACH => 101,   #    so cannot use Errno.
};

lib/Apache/Solr.pm  view on Meta::CPAN

	$self->{AS_core}     = $args->{core};
	$self->{AS_commit}   = exists $args->{autocommit} ? $args->{autocommit} : 1;
	$self->{AS_sversion} = $args->{server_version} || LATEST_SOLR_VERSION;
	$self->{AS_retry_wait} = $args->{retry_wait} // 5;  # seconds
	$self->{AS_retry_max}  = $args->{retry_max}  // 60;
	$self->{AS_underscore} = exists $args->{field_key_simplify} ? $args->{field_key_simplify} : 1;

	$http_agent = $self->{AS_agent} =
		$args->{agent} || $http_agent || LWP::UserAgent->new(keep_alive=>1);

	weaken $http_agent;
	$self;
}

#--------------------

sub core(;$) { my $s = shift; @_ ? $s->{AS_core}   = shift : $s->{AS_core} }
sub autocommit(;$) { my $s = shift; @_ ? $s->{AS_commit} = shift : $s->{AS_commit} }
sub agent() { $_[0]->{AS_agent} }
sub serverVersion() { $_[0]->{AS_sversion} }

lib/Apache/Solr/Result.pm  view on Meta::CPAN

}


use warnings;
no warnings 'recursion';  # linked list of pages can get deep

use strict;

use Log::Report    qw/solr/;
use Time::HiRes    qw/time/;
use Scalar::Util   qw/weaken/;

use Apache::Solr::Document ();

use Data::Dumper;
$Data::Dumper::Indent    = 1;
$Data::Dumper::Quotekeys = 0;

#--------------------

use overload

lib/Apache/Solr/Result.pm  view on Meta::CPAN

	my $p = $args->{params} || [];
	($p, my $params)      = ref $p eq 'HASH' ? ( +[%$p], $p ) : ($p, +{@$p});
	$self->{ASR_params}   = $p;

	$self->{ASR_endpoint} = $args->{endpoint} or panic;
	$self->{ASR_start}    = time;
	$self->request($args->{request});
	$self->response($args->{response});

	$self->{ASR_pages}    = [ $self ];   # first has non-weak page-table
	weaken $self->{ASR_pages}[0];        # no reference loop!

	if($self->{ASR_core}  = $args->{core}) { weaken $self->{ASR_core} }
	$self->{ASR_next}     = $params->{start} || 0;
	$self->{ASR_seq}      = $args->{sequential} || 0;
	$self->{ASR_fpz}      = $args->{_fpz};
	$self;
}

# replace the pageset with a shared set.
sub _pageset($)
{	$_[0]->{ASR_pages} = $_[1];
	weaken $_[0]->{ASR_pages};           # otherwise memory leak
}

#--------------------

sub start()      { $_[0]->{ASR_start} }
sub endpoint()   { $_[0]->{ASR_endpoint} }
sub params()     { @{ $_[0]->{ASR_params}} }
sub core()       { $_[0]->{ASR_core} }
sub sequential() { $_[0]->{ASR_seq} }



( run in 1.874 second using v1.01-cache-2.11-cpan-9789f410c06 )