📄 queryfilter.pm
字号:
package KinoSearch::Search::QueryFilter;use strict;use warnings;use KinoSearch::Util::ToolSet;use base qw( KinoSearch::Util::Class );BEGIN { __PACKAGE__->init_instance_vars( # constructor params / members query => undef, # members cached_bits => undef, );}use KinoSearch::Search::HitCollector;sub init_instance { my $self = shift; confess("required parameter query is not a KinoSearch::Search::Query") unless a_isa_b( $self->{query}, 'KinoSearch::Search::Query' );}sub bits { my ( $self, $searcher ) = @_; # fill the cache if ( !defined $self->{cache} ) { my $collector = KinoSearch::Search::BitCollector->new( capacity => $searcher->max_doc, ); # perform the search $searcher->search_hit_collector( weight => $self->{query}->to_weight($searcher), hit_collector => $collector, ); # save the bitvector of doc hits $self->{cached_bits} = $collector->get_bit_vector; } return $self->{cached_bits};}1;__END__=head1 NAMEKinoSearch::Search::QueryFilter - build a filter based on results of a query=head1 SYNOPSIS my $books_only_query = KinoSearch::Search::TermQuery->new( term => KinoSearch::Index::Term->new( 'category', 'books' ); ); my $filter = KinoSearch::Search::QueryFilter->new( query => $books_only_query; ); my $hits = $searcher->search( query => $query_string, filter => $filter, );=head1 DESCRIPTION A QueryFilter spawns a result set that can be used to filter the results ofanother query. The effect is very similar to adding a required clause to aL<BooleanQuery|KinoSearch::Search::BooleanQuery> -- however, a QueryFiltercaches its results, so it is more efficient if you use it more than once.=head1 METHODS=head2 new my $filter = KinoSearch::Search::QueryFilter->new( query => $query; );Constructor. Takes one hash-style parameter, C<query>, which must be anobject belonging to a subclass ofL<KinoSearch::Search::Query|KinoSearch::Search::Query>.=head1 COPYRIGHTCopyright 2005-2007 Marvin Humphrey=head1 LICENSE, DISCLAIMER, BUGS, etc.See L<KinoSearch|KinoSearch> version 0.163.=cut
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -