diff options
-rw-r--r-- | lib/LXRng/Search/Xapian.pm | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/LXRng/Search/Xapian.pm b/lib/LXRng/Search/Xapian.pm index f337962..804ae14 100644 --- a/lib/LXRng/Search/Xapian.pm +++ b/lib/LXRng/Search/Xapian.pm @@ -145,6 +145,12 @@ sub flush { $self->wrdb->flush(); } +sub remove_underscores { + my ($s) = @_; + $s =~ s/_/ /g; + return $s; +} + sub search { my ($self, $rel_id, $query) = @_; @@ -158,11 +164,12 @@ sub search { $query =~ s/\b([A-Z]+)\b/\L$1\E/g; } else { - $query =~ s/([\S_]+_[\S_]*)/\"$1\"/g; - $query =~ s/_/ /g; + $query =~ s/([\S_]+_[\S_]*)/"(\"$1\" || \"".remove_underscores($1)."\")"/ge; $query =~ s/\b(?![A-Z][^A-Z]*\b)(\S+)/\L$1\E/g; } $query =~ s/\b(\w+)\b/indexed_term($1) ? $1 : ""/ge; + $query =~ s/\|\|/ OR /g; + $query =~ s/\&\&/ AND /g; my $query = $qp->parse_query($query); $query = Search::Xapian::Query |