[
https://issues.apache.org/jira/browse/LUCENE-6365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14547895#comment-14547895
]
Markus Heiden commented on LUCENE-6365:
---------------------------------------
The Iterator interface is not possible with the current implementation, because
the lookahead of hasNext() would destroy the current value provided by the
previous next(). Anyway, I removed that comment.
I provided now both interfaces (single use and multiple use) with the newest
patch, so for the default case you can use the more intuitive one (single use).
I hope you like it.
I kept the limit inside the iterator, but provided the new class
LimitedFiniteStringsIterator for it. Because it was too complicated to transfer
the limit into the yet complex iteration in AnalyzingSuggester etc.
> Optimized iteration of finite strings
> -------------------------------------
>
> Key: LUCENE-6365
> URL: https://issues.apache.org/jira/browse/LUCENE-6365
> Project: Lucene - Core
> Issue Type: Improvement
> Components: core/other
> Affects Versions: 5.0
> Reporter: Markus Heiden
> Priority: Minor
> Labels: patch, performance
> Attachments: FiniteStringsIterator.patch,
> FiniteStringsIterator2.patch, FiniteStringsIterator3.patch,
> FiniteStringsIterator5.patch
>
>
> Replaced Operations.getFiniteStrings() by an optimized FiniteStringIterator.
> Benefits:
> Avoid huge hash set of finite strings.
> Avoid massive object/array creation during processing.
> "Downside":
> Iteration order changed, so when iterating with a limit, the result may
> differ slightly. Old: emit current node, if accept / recurse. New: recurse /
> emit current node, if accept.
> The old method Operations.getFiniteStrings() still exists, because it eases
> the tests. It is now implemented by use of the new FiniteStringIterator.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]