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

(-)C4/Search.pm (-25 / +49 lines)
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";

Return to bug 3154