Bug 18316: Change search field weight field to decimal
authorDavid Gustafsson <david.gustafsson@ub.gu.se>
Mon, 21 May 2018 12:24:36 +0000 (14:24 +0200)
committerNick Clemens <nick@bywatersolutions.com>
Wed, 7 Nov 2018 22:00:32 +0000 (22:00 +0000)
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>

admin/searchengine/elasticsearch/mappings.pl
installer/data/mysql/atomicupdate/bug_18316_add-weight-column.perl
installer/data/mysql/kohastructure.sql
koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt

index 6760002..8650201 100755 (executable)
@@ -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;
         }
 
index 185a2b5..a076d8b 100644 (file)
@@ -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";
-}
\ No newline at end of file
+}
index 17d29e1..44cb92a 100644 (file)
@@ -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;
index 8165976..bb758bd 100644 (file)
@@ -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>