X-Git-Url: https://git.deb.at/?a=blobdiff_plain;ds=sidebyside;f=lib%2FPackages%2FSearch.pm;h=54998a361ac48e08fd70b32c6088c76e2bf217ed;hb=80a1e989380ebf17bd8b980972dfefb90bc97f8c;hp=32ef1e2eedf00d9f8c455966cc2d0dd90f914b44;hpb=a7c90835e393ff56dd9c84f022347554325bc916;p=deb%2Fpackages.git diff --git a/lib/Packages/Search.pm b/lib/Packages/Search.pm index 32ef1e2..54998a3 100644 --- a/lib/Packages/Search.pm +++ b/lib/Packages/Search.pm @@ -43,7 +43,7 @@ package Packages::Search; use strict; use warnings; -use CGI qw( -oldstyle_urls ); +use CGI; use POSIX; use HTML::Entities; use DB_File; @@ -460,12 +460,14 @@ sub do_fulltext_search { my $numres = 0; my %tmp_results; - open DESC, '<', "$file" + # fgrep is seriously faster than using perl + open DESC, '-|', 'fgrep', '-n', '--', $keyword, $file or die "couldn't open $file: $!"; while () { - next if (index $_, $keyword) < 0; - debug( "Matched line $.: $_", 2); - my $result = $did2pkg->{$.}; + /^(\d+)/; + my $nr = $1; + debug( "Matched line $_", 2); + my $result = $did2pkg->{$nr}; foreach (split /\000/o, $result) { my @data = split /\s/, $_, 3; # debug ("Considering $data[0], arch = $data[2]", 3);