Hi there,

I'm migrating an application from Lucene 4.7.0 to Lucene 6.0.1.
I'm facing a problem with this piece of code :

public List<Object> getDistinctValues(IndexReader reader, EventField field) 
throws IOException {

    List<Object> values = new ArrayList<Object>();
    Fields fields = MultiFields.getFields(reader);
    if (fields == null) return values;

    Terms terms = fields.terms(field.name());
    if (terms == null) return values;

    TermsEnum iterator = terms.iterator();

    Class<? extends Object> type = field.getJavaType();
    BytesRef value = iterator.next();

    while (value != null) {
        if (type == Long.class) {
        } else if (type == Integer.class) {
        } else if (type == Boolean.class) {
            values.add(LegacyNumericUtils.prefixCodedToInt(value) == 1 ? TRUE : 
        } else if (type == Date.class) {
            values.add(new Date(LegacyNumericUtils.prefixCodedToLong(value)));
        } else if (type == String.class) {
        } else {
            log.warn("getDistinctValues: ignoring field " + field + " of type " 
+ type);

        value = iterator.next();

    return values;

The aim of this method is to get all terms present in a field directly in the 
correct java type. I'm seeing just now that NumericUtils is an internal class, 
so I should not have used it.
For now, I can use LegacyNumericUtils, but that's a very temporary solution.

What is the best approach to achieve my goal ?

Thanks in advance for any help.
[[ rethink everything. ]]<http://www.lombardodier.com>

DISCLAIMER **********************************************
This message is intended only for use by the person to
whom it is addressed. It may contain information that is
privileged and confidential. Its content does not constitute
a formal commitment by Bank Lombard Odier & Co Ltd
or any of its branches or affiliates. If you are not the
intended recipient of this message, kindly notify the sender
immediately and destroy this message. Thank You.

Reply via email to