[KinoSearch] new IndexReader on empty Index
Marvin Humphrey
marvin at rectangular.com
Sun Aug 19 09:58:09 PDT 2007
On Aug 17, 2007, at 10:14 AM, Scott Beck wrote:
> Is there a reason it isn't possible to create a new IndexReader on an
> empty index?
There are two scenarios that could be described as "empty index".
The first is the one that is likely to be an incorrectly specified
filepath: either the directory exists but there aren't any index
files in it, or the index directory doesn't exist. Trying to create
an IndexReader against such a filepath should throw an exception, in
keeping with the anti-typo parameter validation strategy deployed
throughout the KS code base.
The second is that index files are present, but no documents have
been added. In this case, the behavior ought to be an empty but
valid IndexReader. However, that is not currently the case. This
code produces an error:
my $invindexer = KinoSearch::InvIndexer->new(
invindex => USConSchema->clobber('dummy_index') );
$invindexer->finish;
my $reader = KinoSearch::Index::IndexReader->open(
invindex => USConSchema->open('dummy_index') );
print "Max doc: " . $reader->max_doc . "\n";
The problem is that InvIndexer->finish declines to change the index
if nothing has happened, so we end up with only the starter file and
not a complete set of index files. I believe this is the error you
encountered, based on the line number you reported.
If that were fixed, would it solve your current problem?
> Also, on a side note, the docs here:
> http://www.rectangular.com/kinosearch/docs/devel/KinoSearch/Store/
> LockFactory.html
> say to use KinoSearch::Index::IndexReader->new(), not ->open(), but
> that gives an error.
Thank you for catching that. Fixed by revision 2494.
Marvin Humphrey
Rectangular Research
http://www.rectangular.com/
More information about the kinosearch
mailing list