(SUM( ( $relevance ) * ( $bonus_list ) )/COUNT(m.source))
RANK
+ my $string_default_sort = 'zzzz';
+ $string_default_sort = 'AAAA' if ($sort_dir eq 'DESC');
+
+ my $number_default_sort = '9999';
+ $number_default_sort = '0000' if ($sort_dir eq 'DESC');
+
my $rank = $relevance;
if (lc($sort) eq 'pubdate') {
$rank = <<" RANK";
( FIRST ((
- SELECT COALESCE(SUBSTRING(frp.value FROM '\\\\d+'),'9999')::INT
+ SELECT COALESCE(SUBSTRING(frp.value FROM '\\\\d+'),'$number_default_sort')::INT
FROM $metabib_full_rec frp
WHERE frp.record = mr.master_record
AND frp.tag = '260'
} elsif (lc($sort) eq 'title') {
$rank = <<" RANK";
( FIRST ((
- SELECT COALESCE(LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'zzzzzzzz')
+ SELECT COALESCE(LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'$string_default_sort')
FROM $metabib_full_rec frt
WHERE frt.record = mr.master_record
AND frt.tag = '245'
} elsif (lc($sort) eq 'author') {
$rank = <<" RANK";
( FIRST((
- SELECT COALESCE(LTRIM(fra.value),'zzzzzzzz')
+ SELECT COALESCE(LTRIM(fra.value),'$string_default_sort')
FROM $metabib_full_rec fra
WHERE fra.record = mr.master_record
AND fra.tag LIKE '1%'
my $relevance = join (' + ', @rank_list);
$relevance = "SUM( ($relevance) * ($bonuses) )/COUNT(DISTINCT smrs.source)";
+ my $string_default_sort = 'zzzz';
+ $string_default_sort = 'AAAA' if ($sort_dir eq 'DESC');
+
+ my $number_default_sort = '9999';
+ $number_default_sort = '0000' if ($sort_dir eq 'DESC');
+
+
my $secondary_sort = <<" SORT";
( FIRST ((
- SELECT COALESCE(LTRIM(SUBSTR( sfrt.value, COALESCE(SUBSTRING(sfrt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'zzzzzzzz')
+ SELECT COALESCE(LTRIM(SUBSTR( sfrt.value, COALESCE(SUBSTRING(sfrt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'$string_default_sort')
FROM $metabib_full_rec sfrt,
$metabib_metarecord mr
WHERE sfrt.record = mr.master_record
if (lc($sort) eq 'pubdate') {
$rank = <<" RANK";
( FIRST ((
- SELECT COALESCE(SUBSTRING(frp.value FROM '\\\\d+'),'9999')::INT
+ SELECT COALESCE(SUBSTRING(frp.value FROM '\\\\d+'),'$number_default_sort')::INT
FROM $metabib_full_rec frp
WHERE frp.record = mr.master_record
AND frp.tag = '260'
} elsif (lc($sort) eq 'title') {
$rank = <<" RANK";
( FIRST ((
- SELECT COALESCE(LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'zzzzzzzz')
+ SELECT COALESCE(LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'$string_default_sort')
FROM $metabib_full_rec frt
WHERE frt.record = mr.master_record
AND frt.tag = '245'
RANK
$secondary_sort = <<" SORT";
( FIRST ((
- SELECT COALESCE(SUBSTRING(sfrp.value FROM '\\\\d+'),'9999')::INT
+ SELECT COALESCE(SUBSTRING(sfrp.value FROM '\\\\d+'),'$number_default_sort')::INT
FROM $metabib_full_rec sfrp
WHERE sfrp.record = mr.master_record
AND sfrp.tag = '260'
} elsif (lc($sort) eq 'author') {
$rank = <<" RANK";
( FIRST((
- SELECT COALESCE(LTRIM(fra.value),'zzzzzzzz')
+ SELECT COALESCE(LTRIM(fra.value),'$string_default_sort')
FROM $metabib_full_rec fra
WHERE fra.record = mr.master_record
AND fra.tag LIKE '1%'
my $relevance = join (' + ', @rank_list);
$relevance = "AVG( ($relevance) * ($bonuses) )";
+ my $string_default_sort = 'zzzz';
+ $string_default_sort = 'AAAA' if ($sort_dir eq 'DESC');
+
+ my $number_default_sort = '9999';
+ $number_default_sort = '0000' if ($sort_dir eq 'DESC');
my $rank = $relevance;
if (lc($sort) eq 'pubdate') {
$rank = <<" RANK";
( FIRST ((
- SELECT COALESCE(SUBSTRING(frp.value FROM '\\\\d{4}'),'9999')::INT
+ SELECT COALESCE(SUBSTRING(frp.value FROM '\\\\d{4}'),'$number_default_sort')::INT
FROM $metabib_full_rec frp
WHERE frp.record = b.id
AND frp.tag = '260'
} elsif (lc($sort) eq 'title') {
$rank = <<" RANK";
( FIRST ((
- SELECT COALESCE(LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'zzzzzzzz')
+ SELECT COALESCE(LTRIM(SUBSTR( frt.value, COALESCE(SUBSTRING(frt.ind2 FROM '\\\\d+'),'0')::INT + 1 )),'$string_default_sort')
FROM $metabib_full_rec frt
WHERE frt.record = b.id
AND frt.tag = '245'
} elsif (lc($sort) eq 'author') {
$rank = <<" RANK";
( FIRST((
- SELECT COALESCE(LTRIM(fra.value),'zzzzzzzz')
+ SELECT COALESCE(LTRIM(fra.value),'$string_default_sort')
FROM $metabib_full_rec fra
WHERE fra.record = b.id
AND fra.tag LIKE '1%'