Example usage for org.apache.lucene.search SortField STRING_FIRST

List of usage examples for org.apache.lucene.search SortField STRING_FIRST

Introduction

In this page you can find the example usage for org.apache.lucene.search SortField STRING_FIRST.

Prototype

Object STRING_FIRST

To view the source code for org.apache.lucene.search SortField STRING_FIRST.

Click Source Link

Document

Pass this to #setMissingValue to have missing string values sort first.

Usage

From source file:com.epam.catgenome.dao.index.FeatureIndexDao.java

License:Open Source License

private void setMissingValuesOrder(SortField sf, SortField.Type type, boolean desc) {
    switch (type) {
    case STRING:/*from  www . j  a  v  a  2s .  com*/
        sf.setMissingValue(desc ? SortField.STRING_FIRST : SortField.STRING_LAST);
        break;
    case FLOAT:
        sf.setMissingValue(Float.MIN_VALUE);
        break;
    case INT:
        sf.setMissingValue(Integer.MIN_VALUE);
        break;
    default:
        throw new IllegalArgumentException("Unexpected sort type: " + type);
    }
}

From source file:com.qwazr.search.field.SortUtils.java

License:Apache License

final static void sortStringMissingValue(QueryDefinition.SortEnum sortEnum, SortField sortField) {
    if (sortEnum == null)
        return;/* w  w w.ja  v  a 2s.c  om*/
    switch (sortEnum) {
    case ascending:
    case descending:
        return;
    case ascending_missing_last:
    case descending_missing_first:
        sortField.setMissingValue(SortField.STRING_LAST);
    case ascending_missing_first:
    case descending_missing_last:
        sortField.setMissingValue(SortField.STRING_FIRST);
    }
}

From source file:org.codelibs.elasticsearch.common.lucene.Lucene.java

License:Apache License

private static void writeMissingValue(StreamOutput out, Object missingValue) throws IOException {
    if (missingValue == SortField.STRING_FIRST) {
        out.writeByte((byte) 1);
    } else if (missingValue == SortField.STRING_LAST) {
        out.writeByte((byte) 2);
    } else {//from  www .  j  a v a2s . c  om
        out.writeByte((byte) 0);
        out.writeGenericValue(missingValue);
    }
}

From source file:org.codelibs.elasticsearch.common.lucene.Lucene.java

License:Apache License

private static Object readMissingValue(StreamInput in) throws IOException {
    final byte id = in.readByte();
    switch (id) {
    case 0:/*from  w  ww  .j av  a  2s.c  o  m*/
        return in.readGenericValue();
    case 1:
        return SortField.STRING_FIRST;
    case 2:
        return SortField.STRING_LAST;
    default:
        throw new IOException("Unknown missing value id: " + id);
    }
}

From source file:org.codelibs.elasticsearch.index.fielddata.fieldcomparator.BytesRefFieldComparatorSource.java

License:Apache License

@Override
public Object missingValue(boolean reversed) {
    if (sortMissingFirst(missingValue) || sortMissingLast(missingValue)) {
        if (sortMissingLast(missingValue) ^ reversed) {
            return SortField.STRING_LAST;
        } else {/*from  w w  w . j ava  2s .  c  o  m*/
            return SortField.STRING_FIRST;
        }
    }
    // otherwise we fill missing values ourselves
    return null;
}

From source file:org.hibernate.search.backend.lucene.types.sort.impl.StringFieldSortContributor.java

License:LGPL

private StringFieldSortContributor() {
    super(SortField.STRING_FIRST, SortField.STRING_LAST);
}

From source file:org.hibernate.search.query.dsl.sort.impl.SortFieldStates.java

License:LGPL

private void processMissingValue(SortField sortField) {
    if (currentMissingValue != null && sortField.getType() != null) {
        if (sortField.getType() == SortField.Type.STRING || sortField.getType() == SortField.Type.STRING_VAL) {
            if (currentMissingValue == MISSING_VALUE_LAST) {
                sortField.setMissingValue(SortField.STRING_LAST);
            } else if (currentMissingValue == MISSING_VALUE_FIRST) {
                sortField.setMissingValue(SortField.STRING_FIRST);
            } else {
                throw new SearchException("Unsupported 'use(Object)' for the field type: '" + currentType + "'."
                        + " Only 'sortFirst()' and 'sortLast()' are supported.");
            }//from   w  ww  . j a  v a 2  s .  co  m
        } else {
            boolean reverse = sortField.getReverse();
            if (currentMissingValue == MISSING_VALUE_FIRST && !reverse
                    || currentMissingValue == MISSING_VALUE_LAST && reverse) {
                Object min = SCALAR_MINIMUMS.get(sortField.getType());
                if (min != null) {
                    sortField.setMissingValue(min);
                } else {
                    throw new SearchException("Unsupported 'sortFirst()'/'sortLast()' for the field type: '"
                            + currentType + "'." + " Only 'use(Object)' is supported.");
                }
            } else if (currentMissingValue == MISSING_VALUE_LAST && !reverse
                    || currentMissingValue == MISSING_VALUE_FIRST && reverse) {
                Object max = SCALAR_MAXIMUMS.get(sortField.getType());
                if (max != null) {
                    sortField.setMissingValue(max);
                } else {
                    throw new SearchException("Unsupported 'sortFirst()'/'sortLast()' for the field type: '"
                            + currentType + "'." + " Only 'use(Object)' is supported.");
                }
            } else {
                /*
                 * Field bridge cannot be used for non-string sort values, since the field bridge
                 * only provides a String and the SortField only accepts a value of the
                 * actual sort type (Long, Double, ...).
                 * That's why we don't call useFieldBridgeIfNecessary() here.
                 */
                sortField.setMissingValue(currentMissingValue);
            }
        }
    }
}

From source file:org.meresco.lucene.QueryConverter.java

License:Open Source License

private Object missingSortValue(String missingValue) {
    if (missingValue == null)
        return null;
    if (missingValue.equals("STRING_FIRST"))
        return SortField.STRING_FIRST;
    else if (missingValue.equals("STRING_LAST"))
        return SortField.STRING_LAST;
    return null;//from  w w  w .ja  v  a2 s .c  o m
}

From source file:org.meresco.lucene.QueryConverterTest.java

License:Open Source License

@Test
public void testSortKeys() {
    JsonObject json = Json.createObjectBuilder()
            .add("query", Json.createObjectBuilder().add("type", "MatchAllDocsQuery"))
            .add("sortKeys",
                    Json.createArrayBuilder()
                            .add(Json.createObjectBuilder().add("sortBy", "fieldname").add("type", "String")
                                    .add("sortDescending", false))
                            .add(Json.createObjectBuilder().add("sortBy", "score").add("sortDescending", true))
                            .add(Json.createObjectBuilder().add("sortBy", "intfield").add("type", "Int")
                                    .add("sortDescending", true))
                            .add(Json.createObjectBuilder().add("sortBy", "fieldname").add("type", "String")
                                    .add("missingValue", "STRING_FIRST").add("sortDescending", true))
                            .add(Json.createObjectBuilder().add("sortBy", "fieldname").add("type", "String")
                                    .add("missingValue", "STRING_LAST").add("sortDescending", true))
                            .add(Json.createObjectBuilder().add("sortBy", "longfield").add("type", "Long")
                                    .add("sortDescending", true))
                            .add(Json.createObjectBuilder().add("sortBy", "doublefield").add("type", "Double")
                                    .add("sortDescending", true)))
            .build();//  ww  w.  ja v a  2 s. c  o m
    QueryData q = new QueryData(new StringReader(json.toString()), queryConverter);
    assertEquals(new MatchAllDocsQuery(), q.query);
    SortField[] sortFields = q.sort.getSort();
    assertEquals(7, sortFields.length);
    assertEquals("fieldname", sortFields[0].getField());
    assertEquals(SortField.Type.STRING, sortFields[0].getType());
    assertEquals(false, sortFields[0].getReverse());
    assertEquals(null, sortFields[0].missingValue);

    assertEquals(null, sortFields[1].getField());
    assertEquals(SortField.Type.SCORE, sortFields[1].getType());
    assertEquals(true, sortFields[1].getReverse());
    assertEquals(null, sortFields[1].missingValue);

    assertEquals("intfield", sortFields[2].getField());
    assertEquals(SortField.Type.INT, sortFields[2].getType());
    assertEquals(true, sortFields[2].getReverse());
    assertEquals(null, sortFields[2].missingValue);

    assertEquals("fieldname", sortFields[3].getField());
    assertEquals(SortField.Type.STRING, sortFields[3].getType());
    assertEquals(true, sortFields[3].getReverse());
    assertEquals(SortField.STRING_FIRST, sortFields[3].missingValue);

    assertEquals("fieldname", sortFields[4].getField());
    assertEquals(SortField.Type.STRING, sortFields[4].getType());
    assertEquals(true, sortFields[4].getReverse());
    assertEquals(SortField.STRING_LAST, sortFields[4].missingValue);

    assertEquals("longfield", sortFields[5].getField());
    assertEquals(SortField.Type.LONG, sortFields[5].getType());
    assertEquals(true, sortFields[5].getReverse());
    assertEquals(null, sortFields[5].missingValue);

    assertEquals("doublefield", sortFields[6].getField());
    assertEquals(SortField.Type.DOUBLE, sortFields[6].getType());
    assertEquals(true, sortFields[6].getReverse());
    assertEquals(null, sortFields[6].missingValue);
}