Gupta, Rajiv wrote on 12/6/16 3:16 PM:
I thought since I'm doing read and write together I may be getting file error
so I tried to use FastUpdate method described here -
http://lucy.apache.org/docs/perl/Lucy/Docs/Cookbook/FastUpdates.html

But now I'm more frequently getting below error. Error input 57 too high
20161206 150630 []  S_fibonacci at core/Lucy/Index/IndexManager.c line 129

My use case is. While my application generating multiple logs, I'm indexing
them parallelly. To achieve this I'm storing docs at multiple locations at
each directory level. In a directory there could be multiple log files so for
that directory I'm having one indexer directory. When file get closed I
insert an end marker doc to indicate that indexing on that file is done.
However, sometimes same file get open multiple times with additional data. In
such case I search in existing indexing directory if there is any end marker
is set, if there is end marker then I delete that end marker, and index
additional data and again insert end marker. In this process I search as well
as write at the same time.

I started seeing these type of error only after I inserted the logic of
search and deleting. Should I catch this and retry? How many docs I should
limit to commit together?


It wasn't clear to me from your description, but you should be running only one indexer at time per invindex.

You should also destroy any open searchers once the invindex changes (the indexer commits).

You can see here how Dezi approaches this:

https://metacpan.org/source/KARMAN/Dezi-App-0.014/lib/Dezi/Lucy/Searcher.pm#L406

TL;DR Dezi keeps track of a invindex header file with a UUID in it, which changes whenever the indexer finishes. Both the UUID and a md5 checksum of the header file are checked on every search, and the searcher is destroyed and a new one created if the old searcher is stale.


--
Peter Karman  .  http://peknet.com/  .  [email protected]

Reply via email to