use Modern::Perl;
use CGI;
+use Scalar::Util qw(looks_like_number);
use C4::Koha;
use C4::Output;
use C4::Auth;
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;
}
$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";
-}
\ No newline at end of file
+}
`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;
<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>
[% 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>