Thanks for responding. Did not update the sql files and update script, because I hardcoded the default in the pref file and the Search module. Hoped to make that clear in the patch comments. So it is not really necessary. As soon as a user changes the pref, it will be saved in the db anyway. Lazy programmer ;)
Marcel -----Oorspronkelijk bericht----- Van: Fischer, Katrin [mailto:[email protected]] Verzonden: donderdag 24 februari 2011 11:45 Aan: Marcel de Rooy Onderwerp: RE: [Koha-patches] [PATCH] 3154 Preference for building facets Hi Marcel, I was looking at your patch and I think the syspref is not correctly implemented. Chris Cormack (rangi) explained on IRC yesterday what needs to be done: http://stats.workbuffer.org/irclog/koha/2011-02-23#i_605609 Hope this is helpful for you. Katrin > -----Original Message----- > From: [email protected] [mailto:koha- > [email protected]] On Behalf Of Marcel de Rooy > Sent: Thursday, February 24, 2011 11:36 AM > To: [email protected] > Cc: Frédéric DEMIANS; Fridolyn SOMERS > Subject: [Koha-patches] [PATCH] 3154 Preference for building facets > > Patch from Fridolyn Somers with input of Frederic Demians. > I only added new Searching preference maxRecordsForFacets. > This pref contains number of result records used in facet building. > Pref not needed in update script; default 20 is used if it should not > yet exist. > --- > C4/Search.pm | 72 > +++++++++++++------- > .../en/modules/admin/preferences/searching.pref | 6 ++ > 2 files changed, 53 insertions(+), 25 deletions(-) > > diff --git a/C4/Search.pm b/C4/Search.pm > index a469948..a33e5e2 100644 > --- a/C4/Search.pm > +++ b/C4/Search.pm > @@ -309,6 +309,7 @@ sub getRecords { > my $facets_counter = (); > my $facets_info = (); > my $facets = getFacets(); > + my $facets_maxrecs = C4::Context- > >preference('maxRecordsForFacets')||20; > > my @facets_loop; # stores the ref to array of hashes for > template facets loop > > @@ -418,7 +419,6 @@ sub getRecords { > for ( my $j = $offset ; $j < $times ; $j++ ) { > my $records_hash; > my $record; > - my $facet_record; > > ## Check if it's an index scan > if ($scan) { > @@ -451,33 +451,55 @@ sub getRecords { > > # warn "RECORD $j:".$record; > $results_hash->{'RECORDS'}[$j] = $record; > - > - # Fill the facets while we're looping, but only for the > biblioserver > - $facet_record = MARC::Record- > >new_from_usmarc($record) > - if $servers[ $i - 1 ] =~ /biblioserver/; > - > - #warn $servers[$i-1]."\n".$record; > #.$facet_record->title(); > - if ($facet_record) { > - for ( my $k = 0 ; $k <= @$facets ; $k++ ) > { > - ($facets->[$k]) or next; > - my @fields = map {$facet_record- > >field($_)} @{$facets->[$k]->{'tags'}} ; > - for my $field (@fields) { > - my @subfields = $field- > >subfields(); > - for my $subfield (@subfields) { > - my ( $code, $data ) = > @$subfield; > - ($code eq $facets->[$k]- > >{'subfield'}) or next; > - $facets_counter->{ $facets- > >[$k]->{'link_value'} }->{$data}++; > - } > - } > - $facets_info->{ $facets->[$k]- > >{'link_value'} }->{'label_value'} = > - $facets->[$k]->{'label_value'}; > - $facets_info->{ $facets->[$k]- > >{'link_value'} }->{'expanded'} = > - $facets->[$k]->{'expanded'}; > - } > - } > } > + > } > $results_hashref->{ $servers[ $i - 1 ] } = > $results_hash; > + > + # Fill the facets while we're looping, but only for > the biblioserver and not for a scan > + if ( !$scan && $servers[ $i - 1 ] =~ /biblioserver/ ) > { > + > + my $jmax = $size>$facets_maxrecs? $facets_maxrecs: > $size; > + > + for ( my $k = 0 ; $k <= @$facets ; $k++ ) { > + ($facets->[$k]) or next; > + my @fcodes = @{$facets->[$k]->{'tags'}}; > + my $sfcode = $facets->[$k]->{'subfield'}; > + > + for ( my $j = 0 ; $j < $jmax ; $j++ ) { > + my $render_record = $results[ $i - 1 ]- > >record($j)->render(); > + my @used_datas = (); > + > + foreach my $fcode (@fcodes) { > + > + # avoid first line > + my $field_pattern = '\n'.$fcode.' > ([^\n]+)'; > + my @field_tokens = ( $render_record =~ > /$field_pattern/g ) ; > + > + foreach my $field_token > (@field_tokens) { > + my $subfield_pattern = > '\$'.$sfcode.' ([^\$]+)'; > + my @subfield_values = ( > $field_token =~ /$subfield_pattern/g ); > + > + foreach my $subfield_value > (@subfield_values) { > + > + my $data = $subfield_value; > + $data =~ s/^\s+//; # trim left > + $data =~ s/\s+$//; # trim > right > + > + unless ( $data ~~ @used_datas > ) { > + $facets_counter->{ > $facets->[$k]->{'link_value'} }->{$data}++; > + push @used_datas, $data; > + } > + } # subfields > + } # fields > + } # field codes > + } # records > + > + $facets_info->{ $facets->[$k]->{'link_value'} > }->{'label_value'} = $facets->[$k]->{'label_value'}; > + $facets_info->{ $facets->[$k]->{'link_value'} > }->{'expanded'} = $facets->[$k]->{'expanded'}; > + } # facets > + } > + # End PROGILONE > } > > # warn "connection ", $i-1, ": $size hits"; > diff --git a/koha-tmpl/intranet- > tmpl/prog/en/modules/admin/preferences/searching.pref b/koha- > tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref > index cd924dc..ba969ae 100644 > --- a/koha-tmpl/intranet- > tmpl/prog/en/modules/admin/preferences/searching.pref > +++ b/koha-tmpl/intranet- > tmpl/prog/en/modules/admin/preferences/searching.pref > @@ -122,6 +122,12 @@ Searching: > class: integer > - items per biblio in the search results > - > + - Build facets based on > + - pref: maxRecordsForFacets > + class: integer > + default: 20 > + - records from the search results. > + - > - By default, show > - pref: OPACnumSearchResults > class: integer > -- > 1.6.0.6 > > _______________________________________________ > Koha-patches mailing list > [email protected] > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches > website : http://www.koha-community.org/ > git : http://git.koha-community.org/ > bugs : http://bugs.koha-community.org/ > _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
