<field name="id" oils_obj:array_position="4" oils_persist:virtual="false" />
<field name="name" oils_obj:array_position="5" oils_persist:virtual="false" />
<field name="xpath" oils_obj:array_position="6" oils_persist:virtual="false" />
+ <field name="weight" oils_obj:array_position="7" oils_persist:virtual="false" />
</fields>
<links>
</links>
use base qw/config/;
__PACKAGE__->table('config_metabib_field');
__PACKAGE__->columns(Primary => 'id');
-__PACKAGE__->columns(Essential => qw/field_class name xpath/);
+__PACKAGE__->columns(Essential => qw/field_class name xpath wieght/);
#-------------------------------------------------------------------------------
package config::identification_type;
my $join_table_list = '';
my @rank_list;
+ my $field_table = config::metabib_field->table;
+
my @bonus_lists;
my @bonus_values;
my $prev_search_class;
my $REstring = '^' . join('\s+',map { lc($_) } $fts->words) . '\W*$';
my $first_word = lc(($fts->words)[0]).'%';
+ $_.=" * (SELECT weight FROM $field_table WHERE $search_class.field = id)" for (@fts_ranks);
my $rank = join(' + ', @fts_ranks);
my %bonus = ();
$ot_filter = ' AND ord.item_type IN ('.join(',',map{'?'}@types).')';
}
-
# XXX legacy format and item type support
if ($args{format}) {
my ($t, $f) = split '-', $args{format};
my $join_table_list = '';
my @rank_list;
+ my $field_table = config::metabib_field->table;
my @bonus_lists;
my @bonus_values;
my $REstring = '^' . join('\s+',map { lc($_) } $fts->words) . '\W*$';
my $first_word = lc(($fts->words)[0]).'%';
- my $rank = join(' + ', @fts_ranks);
+ $_.=" * (SELECT weight FROM $field_table WHERE $search_class.field = id)" for (@fts_ranks);
+ my $rank = join(' + ', @fts_ranks);
my %bonus = ();
$bonus{'keyword'} = [ { "CASE WHEN $search_class.value ILIKE ? THEN 10 ELSE 1 END" => $SQLstring } ];
my $bonus_list = join ' * ', map { keys %$_ } @{ $bonus{$search_class} };
$bonus_list ||= '1';
- push @bonus_lists, $bonus_list;
+ push @bonus_lists, $bonus_list,;
push @bonus_values, map { values %$_ } @{ $bonus{$search_class} };
#---------------------
id SERIAL PRIMARY KEY,
field_class TEXT NOT NULL CHECK (lower(field_class) IN ('title','author','subject','keyword','series')),
name TEXT NOT NULL UNIQUE,
- xpath TEXT NOT NULL
+ xpath TEXT NOT NULL,
+ weight INT NOT NULL DEFUALT 1,
);
COMMENT ON TABLE config.metabib_field IS $$
/*