📄 segmentmergeinfo.pm
字号:
package Plucene::Index::SegmentMergeInfo;# final class SegmentMergeInfo=head1 NAME Plucene::Index::SegmentMergeInfo - Segment Merge information=head1 SYNOPSIS my $seg_merge_info = Plucene::Index::SegmentMergeInfo->new($b, $te, $r); $seg_merge_info->next;=head1 DESCRIPTIONThis is the Plucene::Index::SegmentMergeInfo class.=head1 METHODS=cutuse strict;use warnings;use Plucene::Index::SegmentTermPositions;use base 'Class::Accessor::Fast';__PACKAGE__->mk_accessors(qw( base reader term_enum term postings doc_map));use overload cmp => sub { $_[0]->{term} cmp $_[1]->{term} || $_[0]->{base} <=> $_[1]->{base}; }, fallback => 1;=head2 new my $seg_merge_info = Plucene::Index::SegmentMergeInfo ->new($base, Plucene::Index::TermEnum $te, $reader); This will create a new Plucene::Index::SegmentMergerInfo object. =head2 base / reader / term_enum / term / postings / doc_mapGet / set these attributes. =cut# SegmentMergeInfo(int b, SegmentTermEnum te, SegmentReader r)# throws IOException {# base = b;# reader = r;# termEnum = te;# term = te.term();# postings = new SegmentTermPositions(r);## if (reader.deletedDocs != null) {# // build array which maps document numbers around deletions# BitVector deletedDocs = reader.deletedDocs;# int maxDoc = reader.maxDoc();# docMap = new int[maxDoc];# int j = 0;# for (int i = 0; i < maxDoc; i++) {# if (deletedDocs.get(i))# docMap[i] = -1;# else# docMap[i] = j++;# }# }# }sub new { my ($class, $b, $te, $r) = @_; my $self = $class->SUPER::new({ base => $b, reader => $r, term_enum => $te, term => $te->term, postings => Plucene::Index::SegmentTermPositions->new($r), }); if (my $del = $r->deleted_docs) { my $j; $self->{doc_map} = [ map $del->get($_) ? -1 : $j++, 0 .. $r->max_doc ]; } return $self;}=head2 next $seg_merge_info->next;=cut# final boolean next() throws IOException {# if (termEnum.next()) {# term = termEnum.term();# return true;# } else {# term = null;# return false;# }# }sub next { my $self = shift; if ($self->{term_enum}->next) { $self->{term} = $self->{term_enum}->term; return 1; } else { undef $self->{term}; return; }}=head2 close $seg_merge_info->close;=cut# final void close() throws IOException {# termEnum.close();# postings.close();# }sub close { my $self = shift; $self->term_enum->close; $self->postings->close;}1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -