Packages::Search: ignore empty keywords after stemming
authorFrank Lichtenheld <frank@lichtenheld.de>
Sat, 20 Oct 2007 17:12:14 +0000 (19:12 +0200)
committerFrank Lichtenheld <frank@lichtenheld.de>
Sat, 20 Oct 2007 19:53:20 +0000 (21:53 +0200)
Stemming can output empty strings, e.g. for numbers.
Ignore these.

Reported by Cyril Jaquier <cyril jaquier -at- jaqpot net>

lib/Packages/Search.pm

index d3872672edeadfadc8c259d2546b4141631b7121..be7bebd05f1aee4e9f635fd38be82cf7a47dd677 100644 (file)
@@ -209,10 +209,10 @@ sub do_xapian_search {
        push @tmp, $keyword;
     }
     my $stemmer = Lingua::Stem->new();
-    my $stemmed_keywords = $stemmer->stem( @tmp );
+    my @stemmed_keywords = grep { length($_) } @{$stemmer->stem( @tmp )};
 
     my $db = Search::Xapian::Database->new( $dbpath );
-    my $enq = $db->enquire( OP_OR, @$keywords, @$stemmed_keywords );
+    my $enq = $db->enquire( OP_OR, @$keywords, @stemmed_keywords );
     debug( "Xapian Query was: ".$enq->get_query()->get_description(), 1) if DEBUG;
     my @matches = $enq->matches(0, 999);