This file is indexed.

/usr/share/perl5/Plucene/Index/SegmentsTermEnum.pm is in libplucene-perl 1.25-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package Plucene::Index::SegmentsTermEnum;

=head1 NAME

Plucene::Index::SegmentsTermEnum

=head1 METHODS

=head2 new / term / doc_freq / next 

as per TermEnum

=cut

# This only appears to be used with doing wildcard searches.

use strict;
use warnings;

use Tie::Array::Sorted;
use Plucene::Index::SegmentMergeInfo;

sub term     { $_[0]->{term} }
sub doc_freq { $_[0]->{doc_freq} }

sub new {
	my ($class, $readers, $starts, $t) = @_;

	tie my @queue, "Tie::Array::Sorted";
	for my $i (0 .. $#{$readers}) {
		my $reader    = $readers->[$i];
		my $term_enum = $reader->terms($t);
		my $smi       =
			Plucene::Index::SegmentMergeInfo->new($starts->[$i], $term_enum,
			$reader);
		if (!$t ? $smi->next : $term_enum->term) {    # ???
			push @queue, $smi;
		}
	}
	my $self = bless { queue => \@queue }, $class;
	if ($t and @queue) {
		my $top = $queue[0];
		$self->{term}     = $top->term_enum->term;
		$self->{doc_freq} = $top->term_enum->doc_freq;
	}
	return $self;
}

sub next {
	my $self = shift;
	my $top  = $self->{queue}[0];
	if (!$top) {
		undef $self->{term};
		return;
	}

	$self->{term}     = $top->term;
	$self->{doc_freq} = 0;
	while ($top && $self->{term}->eq($top->term)) {
		$self->{doc_freq} += $top->term_enum->doc_freq;

		# This might look funny, but it's right. The pop takes $top off
		# the queue, and when it has ->next called on it, its comparison
		# value changes; the queue is tied as a Tie::Array::Sorted, so
		# when it gets added back on, it may be put somewhere else.
		pop @{ $self->{queue} };
		if ($top->next) {
			unshift @{ $self->{queue} }, $top;
		}
		$top = $self->{queue}[0];
	}
	return 1;
}

1;