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]