Apache-Solr
view release on metacpan or search on metacpan
lib/Apache/Solr.pm view on Meta::CPAN
{ $self->deprecated("delete(fromPending)");
$attrs{fromPending} = _to_bool delete $args{fromPending};
}
if(exists $args{fromCommitted})
{ $self->deprecated("delete(fromCommitted)");
$attrs{fromCommitted} = _to_bool delete $args{fromCommitted};
}
my @which;
if(my $id = $args{id})
{ push @which, map +(id => $_), ref $id eq 'ARRAY' ? @$id : $id;
}
if(my $q = $args{query})
{ push @which, map +(query => $_), ref $q eq 'ARRAY' ? @$q : $q;
}
@which or return;
# JSON calls do not accept multiple ids at once (it seems in 4.0)
my $result;
if($self->serverVersion ge '1.4' && !$self->isa('Apache::Solr::JSON'))
{ $result = $self->_delete(\%attrs, \@which);
}
else
{ # old servers accept only one id or query per delete
$result = $self->_delete(\%attrs, [splice @which, 0, 2]) while @which;
}
$result;
}
sub _delete(@) {panic "not implemented"}
sub rollback()
{ my $self = shift;
$self->serverVersion ge '1.4'
or error __x"rollback not supported by your solr server version.";
$self->_rollback;
}
sub extractDocument(@)
{ my $self = shift;
$self->serverVersion ge '1.4'
or error __x"extractDocument() requires Solr v1.4 or higher.";
my %p = $self->expandExtract(@_);
my $data;
# expand* changes '_' into '.'
my $ct = delete $p{'content.type'};
my $fn = delete $p{file};
$p{'resource.name'} ||= $fn if $fn && !ref $fn;
$p{commit} = _to_bool $self->autocommit
unless exists $p{commit};
if(defined $p{string})
{ # try to avoid copying the data, which can be huge
$data = $ct =~ m!^text/!i
? \encode(utf8 => (ref $p{string} eq 'SCALAR' ? ${$p{string}} : $p{string}))
: (ref $p{string} eq 'SCALAR' ? $p{string} : \$p{string} );
delete $p{string};
}
elsif($fn)
{ local $/;
if(ref $fn eq 'GLOB') { $data = \<$fn> }
else
{ local *IN;
open IN, '<:raw', $fn or fault __x"Cannot read document from {fn}", fn => $fn;
$data = \<IN>;
close IN or fault __x"Read error for document {fn}", fn => $fn;
$ct ||= $mimetypes->mimeTypeOf($fn);
}
}
else
{ error __x"extract requires document as file or string.";
}
$self->_extract([%p], $data, $ct);
}
sub _extract($) { panic "not implemented" }
#--------------------
sub _core_admin($@)
{ my ($self, $action, $params) = @_;
$params->{core} ||= $self->core;
my $endpoint = $self->endpoint('cores', core => 'admin', params => $params);
my @params = %$params;
my $result = Apache::Solr::Result->new(params => [ %$params ], endpoint => $endpoint, core => $self);
$self->request($endpoint, $result);
$result;
}
sub coreStatus(%)
{ my ($self, %args) = @_;
$self->_core_admin('STATUS', \%args);
}
sub coreReload(%)
{ my ($self, %args) = @_;
$self->_core_admin('RELOAD', \%args);
}
sub coreUnload($%)
{ my ($self, %args) = @_;
$self->_core_admin('UNLOAD', \%args);
}
#--------------------
sub _calling_sub()
{ for(my $i=0;$i <10; $i++)
( run in 2.806 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )