View | Details | Raw Unified | Return to bug 3154
Collapse All | Expand All

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

Return to bug 3154