You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by ha...@arvatosystems.com on 2015/04/16 17:08:29 UTC

Batch collecting in PostFilter

Hi all,

I am implementing a PostFilter following this article
https://lucidworks.com/blog/custom-security-filtering-in-solr/

We have a requirement to call the external system only once for all the documents (max 200) so below is my change:

-don't call super.collect(docId) in the collect method of the PostFilter but store all docIds in an internal map

-call the external system in the finish() then call super.collect(docId) for all the docs that pass the external filtering

The problem I have: docId exceeds maxDoc "(docID must be >= 0 and < maxDoc=100000 (got docID=123456)"

I suspect I am storing local docIds and when Reader is changed, docBase is also changed so the global docId, which I believe is constructed in super.collect() using the parameter docId and docBase, becomes incorrect.

Could anyone point me to the right direction?

Thanks,

-Ha