From: miker Date: Wed, 13 Jul 2005 23:14:15 +0000 (+0000) Subject: adding better ranking X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=24116ca7a838f5f94438d3e35c3127409950dd0a;p=Evergreen.git adding better ranking git-svn-id: svn://svn.open-ils.org/ILS/trunk@1174 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm index 2ffc6ada74..97213645e8 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm @@ -288,7 +288,14 @@ sub search_class_fts { $has_vols = '' if ($ou_type == 0); } - my $rank_calc = ", sum($rank + CASE WHEN f.value ILIKE ? THEN 1 ELSE 0 END)/count(m.source)"; + my $rank_calc = <<" RANK"; + , SUM( $rank + + CASE WHEN f.value ILIKE ? THEN 1 ELSE 0 END + + CASE WHEN f.value ILIKE ? THEN 1 ELSE 0 END + + 1 / CASE WHEN OCTET_LENGTH(f.value) IS NULL OR OCTET_LENGTH(f.value) = 0 THEN 1000 ELSE OCTET_LENGTH(f.value) END + )/COUNT(m.source) + RANK + $rank_calc = ', 1' if ($self->api_name =~ /unordered/o); my $select = <<" SQL"; @@ -314,9 +321,10 @@ sub search_class_fts { $log->debug("Field Search SQL :: [$select]",DEBUG); my $string = '%'.join('%',$fts->words).'%'; + my $first_word = ($fts->words)[0].'%'; my $recs = ($self->api_name =~ /unordered/o) ? $class->db_Main->selectall_arrayref($select) : - $class->db_Main->selectall_arrayref($select, {}, lc($string)); + $class->db_Main->selectall_arrayref($select, {}, lc($string), lc($first_word)); $log->debug("Search yielded ".scalar(@$recs)." results.",DEBUG);