[ 
https://issues.apache.org/jira/browse/LUCENE-4315?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13438479#comment-13438479
 ] 

Uwe Schindler commented on LUCENE-4315:
---------------------------------------

Hi Mike, I already proposed that and opened this issue to discuss this. As a 
first step to "correct" the current status is the attached patch. But I also 
agree to make it mandatory.

The following Fields implementation would then need to manually iterate and 
(maybe store the value in a volatile as cache):
- MultiFields (returns -1)
- FieldFilterAtomicReader (returns -1 now, but previously also iterated - 
removed that code because it was broken)
                
> Minor fixes for Fields abstract class, TermVectorsWriter
> --------------------------------------------------------
>
>                 Key: LUCENE-4315
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4315
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/index
>    Affects Versions: 4.0-BETA
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>             Fix For: 5.0, 4.0
>
>         Attachments: LUCENE-4315.patch, LUCENE-4315.patch
>
>
> The Fields abstract class is a little bit inconsistent. It does not allow 
> iterator() to throw IOException, but size() is allowed to do this. This is 
> inconsistent, as looping through iterator always returns size without 
> IOException.
> Also Fields.size() allows -1 as return value, but almost all implementation 
> (only MultiFields and FieldFilteredAtomicReader may return -1) actually 
> implement it in a very cheap way. This is simple statistics, we should 
> rethink this:
> - TermVectorsWriter's basic merging (without optimization requires this 
> information, also Terms.size())
> - We can default Fields.size() to count iterator, if not explicitely 
> implemented. This method is called only by "IndexReader introspection) and 
> TermVectors merging.
> We should maybe enforce size() for Fields to return a value >=0 (Preflex also 
> knows its size!), and if the impl class does not have it (MultiFields, 
> FieldFilteredAtomicReader, loop by supplying default impl).
> The current patch still allows -1 as return value and removes IOException 
> from the signature.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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]

Reply via email to