From 160436d556d1379b7c48bb378d982bf2e5ed6f80 Mon Sep 17 00:00:00 2001 From: miker Date: Fri, 13 May 2005 20:54:00 +0000 Subject: [PATCH] adding rank bump for search string word order git-svn-id: svn://svn.open-ils.org/ILS/trunk@725 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../OpenILS/Application/Storage/Publisher/metabib.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 0b2443c04e..59237a499e 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm @@ -192,9 +192,9 @@ sub search_class_fts { $has_vols = '' if ($ou_type == 0); } - my $rank_calc = ", sum($rank)/count(m.source)"; + my $rank_calc = ", sum($rank + CASE WHEN f.value ILIKE ? THEN 1 ELSE 0 END)/count(m.source)"; my $rank_order = "ORDER BY 2 DESC"; - $rank_calc = ',1' if ($self->api_name =~ /unordered/o); + $rank_calc = ',sum(1 + CASE WHEN f.value ILIKE ? THEN 1 ELSE 0 END)' if ($self->api_name =~ /unordered/o); $rank_order = '' if ($self->api_name =~ /unordered/o); my $select = <<" SQL"; @@ -217,7 +217,8 @@ sub search_class_fts { $log->debug("Field Search SQL :: [$select]",DEBUG); - my $recs = $class->db_Main->selectall_arrayref($select); + my $string = '%'.join('%',$fts->words).'%'; + my $recs = $class->db_Main->selectall_arrayref($select, {}, lc($string)); $log->debug("Search yielded ".scalar(@$recs)." results.",DEBUG); @@ -240,6 +241,7 @@ for my $class ( qw/title author subject keyword series/ ) { api_level => 1, stream => 1, cdbi => "metabib::${class}_field_entry", + cachable => 1, ); __PACKAGE__->register_method( api_name => "open-ils.storage.metabib.$class.search_fts.metarecord.staff", @@ -255,6 +257,7 @@ for my $class ( qw/title author subject keyword series/ ) { api_level => 1, stream => 1, cdbi => "metabib::${class}_field_entry", + cachable => 1, ); } -- 2.43.2