]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/DoSearch.pm
Move common functions for template use to Packages::Template
[deb/packages.git] / lib / Packages / DoSearch.pm
index 5b0b4bb5e0c31a8c25e29c57dce2fdc6c6de7554..c1b6dfdd01cd8c51420a530e68ff895eb9bab91b 100644 (file)
@@ -19,7 +19,7 @@ use Packages::DB;
 use Packages::Config qw( $DBDIR @SUITES @ARCHIVES $ROOT );
 
 sub do_search {
-    my ($params, $opts, $html_header, $page_content) = @_;
+    my ($params, $opts, $page_content) = @_;
 
     $Params::Search::too_many_hits = 0;
 
@@ -79,6 +79,14 @@ sub do_search {
     if (@results) {
        my (%pkgs, %subsect, %sect, %archives, %desc, %binaries, %provided_by);
 
+       my %sort_by_relevance;
+       for (1 ... scalar @results) {
+#          debug("$results[$_][0] => $_", 4) if DEBUG;
+           $sort_by_relevance{$results[$_-1][0]} = $_;
+       }
+#      use Data::Dumper;
+#      debug( "sort_by_relevance=".Dumper(\%sort_by_relevance), 4);
+
        unless ($opts->{source}) {
            foreach (@results) {
                my ($pkg_t, $archive, $suite, $arch, $section, $subsection,
@@ -98,7 +106,12 @@ sub do_search {
            }
 
            my %uniq_pkgs = map { $_ => 1 } (keys %pkgs, keys %provided_by);
-           my @pkgs = sort keys %uniq_pkgs;
+           my @pkgs;
+           if ($searchon eq 'names') {
+               @pkgs = sort keys %uniq_pkgs;
+           } else {
+               @pkgs = sort { $sort_by_relevance{$a} <=> $sort_by_relevance{$b} } keys %uniq_pkgs;
+           }
            process_packages( $page_content, 'packages', \%pkgs, \@pkgs, $opts, \@keywords,
                              \&process_package, \%provided_by,
                              \%archives, \%sect, \%subsect,
@@ -110,7 +123,7 @@ sub do_search {
                    $version) = @$_;
 
                my $real_archive = '';
-               if ($archive =~ /^(security|non-US)$/) {
+               if ($archive eq 'security') {
                    $real_archive = $archive;
                    $archive = 'us';
                }