← Index
NYTProf Performance Profile   « block view • line view • sub view »
For /usr/share/koha/opac/cgi-bin/opac/opac-search.pl
  Run on Tue Oct 15 11:58:52 2013
Reported on Tue Oct 15 12:01:43 2013

Filename/usr/share/koha/lib/Koha/QueryParser/Driver/PQF/query_plan/node.pm
StatementsExecuted 10 statements in 585µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11146µs205µsKoha::QueryParser::Driver::PQF::query_plan::node::::BEGIN@2Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@2
11113µs17µsKoha::QueryParser::Driver::PQF::query_plan::node::::BEGIN@4Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@4
11111µs23µsKoha::QueryParser::Driver::PQF::query_plan::node::::BEGIN@5Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@5
0000s0sKoha::QueryParser::Driver::PQF::query_plan::node::::target_syntaxKoha::QueryParser::Driver::PQF::query_plan::node::target_syntax
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Koha::QueryParser::Driver::PQF::query_plan::node;
2342µs2363µs
# spent 205µs (46+158) within Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@2 which was called: # once (46µs+158µs) by Koha::QueryParser::Driver::PQF::BEGIN@13 at line 2
use base 'OpenILS::QueryParser::query_plan::node';
# spent 205µs making 1 call to Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@2 # spent 158µs making 1 call to base::import
3
4326µs221µs
# spent 17µs (13+4) within Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@4 which was called: # once (13µs+4µs) by Koha::QueryParser::Driver::PQF::BEGIN@13 at line 4
use strict;
# spent 17µs making 1 call to Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@4 # spent 4µs making 1 call to strict::import
53514µs236µs
# spent 23µs (11+13) within Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@5 which was called: # once (11µs+13µs) by Koha::QueryParser::Driver::PQF::BEGIN@13 at line 5
use warnings;
# spent 23µs making 1 call to Koha::QueryParser::Driver::PQF::query_plan::node::BEGIN@5 # spent 13µs making 1 call to warnings::import
6
7=head1 NAME
8
- -
21sub target_syntax {
22 my ($self, $server) = @_;
23 my $pqf = '';
24 my $atom_content;
25 my $atom_count = 0;
26 my @fields = ();
27 my $fieldobj;
28 my $relbump;
29
30 if (scalar(@{$self->fields})) {
31 foreach my $field (@{$self->fields}) {
32 $fieldobj = $self->plan->QueryParser->bib1_mapping_by_name('field', $self->classname, $field, $server);
33 $relbump = $self->plan->QueryParser->bib1_mapping_by_name('relevance_bump', $self->classname, $field, $server);
34 if ($relbump) {
35 $fieldobj->{'attr_string'} .= ' ' . $relbump->{'attr_string'};
36 }
37 push @fields, $fieldobj unless (!defined($fieldobj) || ($field eq $self->classname && @{$self->fields} > 1));
38 }
39 } else {
40 $fieldobj = $self->plan->QueryParser->bib1_mapping_by_name('field', $self->classname, $self->classname, $server);
41 my $relbumps = $self->plan->QueryParser->bib1_mapping_by_name('relevance_bump', $self->classname, '', $server);
42 push @fields, $fieldobj;
43 if ($relbumps) {
44 foreach my $field (keys %$relbumps) {
45 $relbump = $relbumps->{$field};
46 $fieldobj = $self->plan->QueryParser->bib1_mapping_by_name('field', $relbump->{'classname'}, $relbump->{'field'}, $server);
47 $fieldobj->{'attr_string'} ||= '';
48 $fieldobj->{'attr_string'} .= ' ' . $relbump->{$server}{'attr_string'} if $relbump->{$server}{'attr_string'};
49 push @fields, $fieldobj;
50 }
51 }
52 }
53
54 if (@{$self->phrases}) {
55 foreach my $phrase (@{$self->phrases}) {
56 if ($phrase) {
57 $phrase =~ s/"/\\"/g;
58 $pqf .= ' @or ' x (scalar(@fields) - 1);
59 foreach my $attributes (@fields) {
60 $attributes->{'attr_string'} ||= '';
61 $pqf .= $attributes->{'attr_string'} . ($attributes->{'4'} ? '' : ' @attr 4=1') . ' "' . $phrase . '" ';
62 }
63 $atom_count++;
64 }
65 }
66 } else {
67 foreach my $atom (@{$self->query_atoms}) {
68 if (ref($atom)) {
69 $atom_content = $atom->target_syntax($server);
70 if ($atom_content) {
71 $pqf .= ' @or ' x (scalar(@fields) - 1);
72 foreach my $attributes (@fields) {
73 $attributes->{'attr_string'} ||= '';
74 if ($self->plan->QueryParser->custom_data->{'QueryAutoTruncate'} || $atom->suffix eq '*') {
75 $attributes->{'attr_string'} .= ($attributes->{'5'} ? '' : ' @attr 5=1 ');
76 }
77 $pqf .= $attributes->{'attr_string'} . ($attributes->{'4'} ? '' : ' @attr 4=6 ') . $atom_content . ' ';
78 }
79 $atom_count++;
80 }
81 }
82 }
83 }
84 $pqf = (OpenILS::QueryParser::_util::default_joiner eq '|' ? ' @or ' : ' @and ') x ($atom_count - 1) . $pqf;
85 return ($self->negate ? '@not @attr 1=_ALLRECORDS @attr 2=103 "" ' : '') . $pqf;
86}
87
8813µs1;