[
https://issues.apache.org/jira/browse/LUCENE-5021?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexis Torres Paderewski updated LUCENE-5021:
---------------------------------------------
Description:
Hello,
I would like to apply ACL once as a PostFilter and I therefore need to bulk
this call since round trips would severely decrease performances.
I tried to just stack them on the DelegatingCollector using this collect :
@Override
public void collect(int doc) throws IOException {
while ((doc = scorer.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
docs.put(getDocumentId(doc), doc);
}
batchCollect();
}
Depending on the Scorer it may or it may not work. Indeed when the Scorer is
"Safe" that is when it handles
the case in which the scorer is exhausted and is called once again after
exhaustion.
This is the case of the (e.g. DisjunctionMaxScorer, ConstantScorer):
if (numScorers == 0) return doc = NO_MORE_DOCS;
On the other hand, when using the DisjunctionSumScorer, it either asserts on
"NO_MORE_DOCS", or it throws a NPE.
Shouldn't we copy the DisjunctionMaxScorer mechanism to protect nextDoc of an
exausted iterator using either current doc or checking numbers of subScorers ?
was:
Hello,
I want to apply ACL once as a PostFilter and I would need to bulk this call
since round trips would decrease severely performances.
I tryed to just stack them on the DelegatingCollector using this collect :
@Override
public void collect(int doc) throws IOException {
while ((doc = scorer.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
docs.put(getDocumentId(doc), doc);
}
batchCollect();
}
Sometime it works, when Scorer calling me are "Safe" like the ConstantScorer,
but when DisjunctionSumScorer calls me, it either assert on NO_MORE_DOCS if
assert are enabled, or it throw a NPE.
Should we copy DisjunctionMaxScorer mechanism to protect nextDoc of an exausted
iterator using either current doc or checking numbers of subScorers ?
> NextDoc safety for bulk collecting
> ----------------------------------
>
> Key: LUCENE-5021
> URL: https://issues.apache.org/jira/browse/LUCENE-5021
> Project: Lucene - Core
> Issue Type: Improvement
> Components: core/index, core/other
> Affects Versions: 3.6.2
> Environment: Any with custom filters
> Reporter: Alexis Torres Paderewski
> Labels: NPE,, Null-Safety, Scorer
>
> Hello,
> I would like to apply ACL once as a PostFilter and I therefore need to bulk
> this call since round trips would severely decrease performances.
> I tried to just stack them on the DelegatingCollector using this collect :
> @Override
> public void collect(int doc) throws IOException {
> while ((doc = scorer.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
> docs.put(getDocumentId(doc), doc);
> }
> batchCollect();
> }
> Depending on the Scorer it may or it may not work. Indeed when the Scorer is
> "Safe" that is when it handles
> the case in which the scorer is exhausted and is called once again after
> exhaustion.
> This is the case of the (e.g. DisjunctionMaxScorer, ConstantScorer):
> if (numScorers == 0) return doc = NO_MORE_DOCS;
> On the other hand, when using the DisjunctionSumScorer, it either asserts on
> "NO_MORE_DOCS", or it throws a NPE.
> Shouldn't we copy the DisjunctionMaxScorer mechanism to protect nextDoc of an
> exausted iterator using either current doc or checking numbers of subScorers ?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]