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.

************************ 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