Lines 418-424
Link Here
|
418 |
for ( my $j = $offset ; $j < $times ; $j++ ) { |
420 |
for ( my $j = $offset ; $j < $times ; $j++ ) { |
419 |
my $records_hash; |
421 |
my $records_hash; |
420 |
my $record; |
422 |
my $record; |
421 |
my $facet_record; |
|
|
422 |
|
423 |
|
423 |
## Check if it's an index scan |
424 |
## Check if it's an index scan |
424 |
if ($scan) { |
425 |
if ($scan) { |
Lines 451-483
Link Here
|
451 |
|
452 |
|
452 |
# warn "RECORD $j:".$record; |
453 |
# warn "RECORD $j:".$record; |
453 |
$results_hash->{'RECORDS'}[$j] = $record; |
454 |
$results_hash->{'RECORDS'}[$j] = $record; |
454 |
|
|
|
455 |
# Fill the facets while we're looping, but only for the biblioserver |
456 |
$facet_record = MARC::Record->new_from_usmarc($record) |
457 |
if $servers[ $i - 1 ] =~ /biblioserver/; |
458 |
|
459 |
#warn $servers[$i-1]."\n".$record; #.$facet_record->title(); |
460 |
if ($facet_record) { |
461 |
for ( my $k = 0 ; $k <= @$facets ; $k++ ) { |
462 |
($facets->[$k]) or next; |
463 |
my @fields = map {$facet_record->field($_)} @{$facets->[$k]->{'tags'}} ; |
464 |
for my $field (@fields) { |
465 |
my @subfields = $field->subfields(); |
466 |
for my $subfield (@subfields) { |
467 |
my ( $code, $data ) = @$subfield; |
468 |
($code eq $facets->[$k]->{'subfield'}) or next; |
469 |
$facets_counter->{ $facets->[$k]->{'link_value'} }->{$data}++; |
470 |
} |
471 |
} |
472 |
$facets_info->{ $facets->[$k]->{'link_value'} }->{'label_value'} = |
473 |
$facets->[$k]->{'label_value'}; |
474 |
$facets_info->{ $facets->[$k]->{'link_value'} }->{'expanded'} = |
475 |
$facets->[$k]->{'expanded'}; |
476 |
} |
477 |
} |
478 |
} |
455 |
} |
|
|
456 |
|
479 |
} |
457 |
} |
480 |
$results_hashref->{ $servers[ $i - 1 ] } = $results_hash; |
458 |
$results_hashref->{ $servers[ $i - 1 ] } = $results_hash; |
|
|
459 |
|
460 |
# Fill the facets while we're looping, but only for the biblioserver and not for a scan |
461 |
if ( !$scan && $servers[ $i - 1 ] =~ /biblioserver/ ) { |
462 |
|
463 |
my $jmax = $size; |
464 |
if ( $jmax > 500 ) { |
465 |
$jmax = 500; # limit to 500 first records |
466 |
} |
467 |
|
468 |
for ( my $k = 0 ; $k <= @$facets ; $k++ ) { |
469 |
($facets->[$k]) or next; |
470 |
my @fcodes = @{$facets->[$k]->{'tags'}}; |
471 |
my $sfcode = $facets->[$k]->{'subfield'}; |
472 |
|
473 |
for ( my $j = 0 ; $j < $jmax ; $j++ ) { |
474 |
my $render_record = $results[ $i - 1 ]->record($j)->render(); |
475 |
my @used_datas = (); |
476 |
|
477 |
foreach my $fcode (@fcodes) { |
478 |
|
479 |
# avoid first line |
480 |
my $field_pattern = '\n'.$fcode.' ([^\n]+)'; |
481 |
my @field_tokens = ( $render_record =~ /$field_pattern/g ) ; |
482 |
|
483 |
foreach my $field_token (@field_tokens) { |
484 |
my $subfield_pattern = '\$'.$sfcode.' ([^\$]+)'; |
485 |
my @subfield_values = ( $field_token =~ /$subfield_pattern/g ); |
486 |
|
487 |
foreach my $subfield_value (@subfield_values) { |
488 |
|
489 |
my $data = $subfield_value; |
490 |
$data =~ s/^\s+//; # trim left |
491 |
$data =~ s/\s+$//; # trim right |
492 |
|
493 |
unless ( $data ~~ @used_datas ) { |
494 |
$facets_counter->{ $facets->[$k]->{'link_value'} }->{$data}++; |
495 |
push @used_datas, $data; |
496 |
} |
497 |
} # subfields |
498 |
} # fields |
499 |
} # field codes |
500 |
} # records |
501 |
|
502 |
$facets_info->{ $facets->[$k]->{'link_value'} }->{'label_value'} = $facets->[$k]->{'label_value'}; |
503 |
$facets_info->{ $facets->[$k]->{'link_value'} }->{'expanded'} = $facets->[$k]->{'expanded'}; |
504 |
} # facets |
505 |
} |
506 |
# End PROGILONE |
481 |
} |
507 |
} |
482 |
|
508 |
|
483 |
# warn "connection ", $i-1, ": $size hits"; |
509 |
# warn "connection ", $i-1, ": $size hits"; |