[ 
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]

Reply via email to