I changed the code to return a default value instead of an exception. In case 
the doc will not be found.
I would like really to understand better why we have such comment in that 
iterator

* Returns the numeric value for the current document ID.  * It is illegal
> to call this method after {@link #advanceExact(int)}   * returned {@code
> false}.   * @return numeric value*

and if I use advance method instead of advanceExact  the subsequent call to 
retrieve the value would be legit?

Thanks
Sergio
On 2020/02/27 22:27:09, Sergio <[email protected]> wrote: 
> Hi guys!
> 
> I am a newbie and I am trying to upgrade from Lucene 6.2.1 to 8.4.1
> The previous code was leveraging this
> https://github.com/apache/lucene-solr/blob/releases/lucene-solr/6.2.1/lucene/core/src/java/org/apache/lucene/index/NumericDocValues.java#L34
> 
> now
> 
> https://github.com/apache/lucene-solr/blob/releases/lucene-solr/8.4.1/lucene/core/src/java/org/apache/lucene/index/NumericDocValues.java#L32-L35
> 
> Previously there was no need to deal with the iterator and I found in the
> code a comment regarding
> 
> 
> 
> ** Returns the numeric value for the current document ID.  * It is illegal
> to call this method after {@link #advanceExact(int)}   * returned {@code
> false}.   * @return numeric value*
> If the below snippet is not correct how should I proceed?
> 
> public static float
> getFloatValueFromNumericDocValuesAndDocId(NumericDocValues
> numericDocValues, int docId) throws IOException {
>   if (numericDocValues.advanceExact(docId)) {
>     return Float.intBitsToFloat((int)numericDocValues.longValue());
>   } else {
>     throw new RuntimeException("It has not been possible to
> advanceExact for " + docId) ;
>   }
> }
> 
> public static int
> getIntValueFromNumericDocValuesAndDocId(NumericDocValues
> numericDocValues, int docId) throws IOException {
>   if (numericDocValues.advanceExact(docId)) {
>     return (int) numericDocValues.longValue();
>   } else {
>     throw new RuntimeException("It has not been possible to
> advanceExact for " + docId) ;
>   }
> }
> 
> public static long
> getLongValueFromNumericDocValuesAndDocId(NumericDocValues
> numericDocValues, int docId) throws IOException {
>   if (numericDocValues.advanceExact(docId)) {
>     return numericDocValues.longValue();
>   } else {
>     throw new RuntimeException("It has not been possible to
> advanceExact for " + docId) ;
>   }
> }
> 
> public static BytesRef
> getBytesRefValueFromSortedDocValuesAndDocId(SortedDocValues
> numericDocValues, int docId) throws IOException {
>   if (numericDocValues.advanceExact(docId)) {
>     return numericDocValues.binaryValue();
>   } else {
>     throw new RuntimeException("It has not been possible to
> advanceExact for " + docId) ;
>   }
> }
> 
> 
> 
> 
> Thanks to everyone!
> 
> Sergio
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to