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

📄 termquery.pm

📁 外国人写的Perl搜索引擎程序
💻 PM
字号:
package KinoSearch::Search::TermQuery;use strict;use warnings;use KinoSearch::Util::ToolSet;use base qw( KinoSearch::Search::Query );use KinoSearch::Util::ToStringUtils qw( boost_to_string );BEGIN {    __PACKAGE__->init_instance_vars(        # constructor params / members        term => undef,    );    __PACKAGE__->ready_get(qw( term ));}sub init_instance {    my $self = shift;    confess("parameter 'term' is not a KinoSearch::Index::Term")        unless a_isa_b( $self->{term}, 'KinoSearch::Index::Term' );}sub create_weight {    my ( $self, $searcher ) = @_;    my $weight = KinoSearch::Search::TermWeight->new(        parent   => $self,        searcher => $searcher,    );}sub extract_terms { shift->{term} }sub to_string {    my ( $self, $proposed_field ) = @_;    my $field = $self->{term}->get_field;    my $string = $proposed_field eq $field ? '' : "$field:";    $string .= $self->{term}->get_text . boost_to_string( $self->{boost} );    return $string;}sub get_similarity {    my ( $self, $searcher ) = @_;    my $field_name = $self->{term}->get_field;    return $searcher->get_similarity($field_name);}sub equals { shift->todo_death }package KinoSearch::Search::TermWeight;use strict;use warnings;use KinoSearch::Util::ToolSet;use base qw( KinoSearch::Search::Weight );use KinoSearch::Search::TermScorer;our %instance_vars = __PACKAGE__->init_instance_vars();sub init_instance {    my $self = shift;    $self->{similarity}        = $self->{parent}->get_similarity( $self->{searcher} );    $self->{idf} = $self->{similarity}        ->idf( $self->{parent}->get_term, $self->{searcher} );    # kill this because we don't want its baggage.    undef $self->{searcher};}sub scorer {    my ( $self, $reader ) = @_;    my $term      = $self->{parent}{term};    my $term_docs = $reader->term_docs($term);    return unless defined $term_docs;    return unless $term_docs->get_doc_freq;    my $norms_reader = $reader->norms_reader( $term->get_field );    return KinoSearch::Search::TermScorer->new(        weight       => $self,        term_docs    => $term_docs,        similarity   => $self->{similarity},        norms_reader => $norms_reader,    );}sub to_string {    my $self = shift;    return "weight(" . $self->{parent}->to_string . ")";}1;__END__=head1 NAMEKinoSearch::Search::TermQuery - match individual Terms=head1 SYNOPSIS    my $term = KinoSearch::Index::Term->new( $field, $term_text );    my $term_query = KinoSearch::Search::TermQuery->new(        term => $term,    );    my $hits = $searcher->search( query => $term_query );=head1 DESCRIPTION TermQuery is a subclass ofL<KinoSearch::Search::Query|KinoSearch::Search::Query> for matching individualL<Terms|KinoSearch::Index::Term>.  Note that since Term objects are associatedwith one and only one field, so are TermQueries.=head1 METHODS=head2 new    my $term_query = KinoSearch::Search::TermQuery->new(        term => $term,    );Constructor.  Takes hash-style parameters:=over=item *B<term> - a L<KinoSearch::Index::Term>.=back=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 + -