diff options
-rw-r--r-- | lib/LXRng/Search/Xapian.pm | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/LXRng/Search/Xapian.pm b/lib/LXRng/Search/Xapian.pm index 5230728..f337962 100644 --- a/lib/LXRng/Search/Xapian.pm +++ b/lib/LXRng/Search/Xapian.pm @@ -107,6 +107,16 @@ sub add_release { return $changes; } +sub indexed_term { + my ($term) = @_; + + return 0 if length($term) <= 2; + return 0 if length($term) > 128; + return 0 if $STOPWORD{$term}; + + return 1; +} + sub make_add_text { my ($index, $doc) = @_; @@ -115,15 +125,12 @@ sub make_add_text { foreach my $term ($text =~ /(_*\w[\w_]*)/g) { $term = lc($term); - next if length($term) <= 2; - next if length($term) > 128; - next if $STOPWORD{$term}; + next unless indexed_term($term); $doc->add_posting($term, $pos++); if ($term =~ /_/) { foreach my $subt ($term =~ /([^_]+)/g) { - next if length($subt) <= 2; - next if $STOPWORD{$subt}; + next unless indexed_term($subt); $doc->add_posting($subt, $pos++); } } @@ -155,6 +162,7 @@ sub search { $query =~ s/_/ /g; $query =~ s/\b(?![A-Z][^A-Z]*\b)(\S+)/\L$1\E/g; } + $query =~ s/\b(\w+)\b/indexed_term($1) ? $1 : ""/ge; my $query = $qp->parse_query($query); $query = Search::Xapian::Query |