#!/usr/bin/perl
my
$where
=
shift
@ARGV
;
if
( !
$where
|| ! -e
$where
){
die
"please specify an index location at the command line\n"
;
}
my
$r
= KinoSearch1::Index::IndexReader->new(
invindex
=>
$where
);
my
@readers
=
ref
$r
->{sub_readers} eq
'ARRAY'
? @{
$r
->{sub_readers} } :
$r
;
print
"We have "
.
@readers
.
" readers\n"
;
print
"\n\nDocuments:\n"
;
for
my
$reader
(
@readers
) {
print
"Segment "
.
$reader
->get_seg_name .
" has "
.
$reader
->max_doc
.
" docs\n"
;
my
$finfos
=
$reader
->get_finfos;
my
$term_enum
=
$reader
->terms;
print
"Fields:\n"
;
my
%fields
;
for
my
$field
(
$finfos
->get_infos ) {
$fields
{
$field
->get_field_num } =
$field
->get_name;
print
"\t"
.
$field
->get_field_num .
": "
.
$field
->get_name;
my
@info
;
foreach
my
$i
(
qw(indexed stored analyzed vectorized binary compressed)
)
{
my
$method
=
"get_$i"
;
push
@info
,
$i
if
(
$field
->
$method
);
}
print
" ["
.
join
(
','
,
map
{
substr
(
$_
, 0, 1 ) }
sort
@info
) .
"]"
if
(
@info
);
print
"\n"
;
}
print
"Terms:\n"
;
my
$td
=
$reader
->term_docs;
while
(
$term_enum
->
next
) {
my
$term
=
$term_enum
->get_term;
print
$term
->to_string .
"\n"
;
$td
->
seek
(
$term
);
while
(
$td
->
next
) {
print
"\t Doc "
.
$td
->get_doc .
" ("
.
$td
->get_doc_freq
.
" occurrences)\n"
;
}
}
}
print
"Total documents: "
.
$r
->max_doc .
" in "
.
@readers
.
" segments\n"
;