⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queryfilter.pm

📁 外国人写的Perl搜索引擎程序
💻 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 + -