Browse Source

Bug 18316: Change search field weight field to decimal

Signed-off-by: Ere Maijala <ere.maijala@helsinki.fi>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
18.11.x
David Gustafsson 3 years ago
committed by Nick Clemens
parent
commit
474b9a1672
  1. 3
      admin/searchengine/elasticsearch/mappings.pl
  2. 4
      installer/data/mysql/atomicupdate/bug_18316_add-weight-column.perl
  3. 2
      installer/data/mysql/kohastructure.sql
  4. 14
      koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt

3
admin/searchengine/elasticsearch/mappings.pl

@ -17,6 +17,7 @@
use Modern::Perl;
use CGI;
use Scalar::Util qw(looks_like_number);
use C4::Koha;
use C4::Output;
use C4::Auth;
@ -71,7 +72,7 @@ if ( $op eq 'edit' ) {
my $search_field = Koha::SearchFields->find( { name => $field_name }, { key => 'name' } );
$search_field->label($field_label);
$search_field->type($field_type);
$search_field->weight($field_weight || '');
$search_field->weight($field_weight) if looks_like_number($field_weight) && $field_weight > 0;
$search_field->store;
}

4
installer/data/mysql/atomicupdate/bug_18316_add-weight-column.perl

@ -1,9 +1,9 @@
$DBversion = 'XXX';
if( CheckVersion( $DBversion ) ) {
if( !column_exists( 'search_field', 'weight' ) ) {
$dbh->do( "ALTER TABLE search_field ADD COLUMN weight int" );
$dbh->do( "ALTER TABLE `search_field` ADD COLUMN `weight` decimal(5,2) DEFAULT NULL" );
}
SetVersion( $DBversion );
print "Upgrade to $DBversion done (Bug 18316 - Add column search_field.weight)\n";
}
}

2
installer/data/mysql/kohastructure.sql

@ -1474,7 +1474,7 @@ CREATE TABLE `search_field` (
`name` varchar(255) NOT NULL COMMENT 'the name of the field as it will be stored in the search engine',
`label` varchar(255) NOT NULL COMMENT 'the human readable name of the field, for display',
`type` ENUM('', 'string', 'date', 'number', 'boolean', 'sum', 'isbn', 'stdno') NOT NULL COMMENT 'what type of data this holds, relevant when storing it in the search engine',
`weight` int default NULL,
`weight` decimal(5,2) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`name` (191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

14
koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt

@ -93,7 +93,7 @@ a.add, a.delete {
<div class="dialog message">
Warning: Any changes to the configuration will only take effect after a full reindex. Until then searching may not work correctly.
<p>Weight: define weight between 1 and 99. Higher numbers indicate increased relevancy.
<p>Weight: define weight as a positive number. Higher numbers indicate increased relevancy.
<strong>Note that fields weighting works only for simple search.</strong></p>
<ol>
<li>only search fields mapped with biblios can be weighted</li>
@ -198,17 +198,13 @@ a.add, a.delete {
[% END %]
</select>
</td>
<td>
[% IF search_field.mapped_biblios %]
<td>
[% IF search_field.weight %]
<input type="number" name="search_field_weight" value="[% search_field.weight %]" min="1" max="99" />
[% ELSE %]
<input type="number" name="search_field_weight" min="1" max="99" />
[% END %]
</td>
<input type="number" step="0.01" min="0" max="999" name="search_field_weight" value="[% search_field.weight %]" />
[% ELSE %]
<td><input type="hidden" name="search_field_weight" value=""></td>
<input type="hidden" name="search_field_weight" value="">
[% END %]
</td>
</tr>
[% END %]
</tbody>

Loading…
Cancel
Save