diff --git a/lib/Ilbot/Backend/Search.pm b/lib/Ilbot/Backend/Search.pm index df26e64..2600643 100644 --- a/lib/Ilbot/Backend/Search.pm +++ b/lib/Ilbot/Backend/Search.pm @@ -197,24 +197,30 @@ sub _index_timestamp { sub _query { my ($self, %opt) = @_; die "Missing argument 'q'" unless defined $opt{q}; - my $query = Lucy::Search::QueryParser->new( - schema => $self->_searcher->get_schema, - )->parse($opt{q}); + my @criteria; + if (length $opt{q}) { + push @criteria, Lucy::Search::QueryParser->new( + schema => $self->_searcher->get_schema, + )->parse($opt{q}); + } if (length $opt{nick}) { - my $q_nick = Lucy::Search::TermQuery->new( + push @criteria, Lucy::Search::TermQuery->new( field => 'nick', term => lc($opt{nick}), ); - $query = Lucy::Search::ANDQuery->new( - children => [$query, $q_nick], + } + if (@criteria > 1) { + return Lucy::Search::ANDQuery->new( + children => \@criteria, ); } - return $query; + else { + return $criteria[0]; + } } sub search_results { my ($self, %opt) = @_; - die "Missing argument 'q'" unless defined $opt{q}; my $s = $self->_searcher; my $q = $self->_query(%opt); my $offset = $opt{offset} // 0; diff --git a/lib/Ilbot/Frontend.pm b/lib/Ilbot/Frontend.pm index a17dd69..05377ff 100644 --- a/lib/Ilbot/Frontend.pm +++ b/lib/Ilbot/Frontend.pm @@ -341,15 +341,13 @@ sub search { my $c = 0; my $prev_nick = q[!!!]; my $line_number = 0; - if (defined $opt{q} && length $opt{q}) { + if (length $opt{q} || length $opt{nick}) { my $res = $b->search_results( nick => $opt{nick}, q => $opt{q}, offset => $opt{offset} // 0, ); if (my $ts = $res->{index_timestamp}) { - use Data::Dumper; - print Dumper $ts; my ($sec, $min, $hour, $day, $mon, $year) = mytime($ts); my $date = sprintf '%04d-%02d-%02d %02d:%02d H', $year + 1900, $mon + 1, $day, $hour, $min;