Example usage for org.apache.lucene.queryparser.xml DOMUtils getAttributeWithInheritanceOrFail

List of usage examples for org.apache.lucene.queryparser.xml DOMUtils getAttributeWithInheritanceOrFail

Introduction

In this page you can find the example usage for org.apache.lucene.queryparser.xml DOMUtils getAttributeWithInheritanceOrFail.

Prototype

public static String getAttributeWithInheritanceOrFail(Element e, String name) throws ParserException 

Source Link

Usage

From source file:com.mathworks.xzheng.tools.XmlQueryParser.AgoFilterBuilder.java

License:Apache License

public Filter getFilter(Element element) throws ParserException {
    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(element, // A
            "fieldName"); // A
    String timeUnit = DOMUtils.getAttribute(element, "timeUnit", "days"); // A
    Integer calUnit = timeUnits.get(timeUnit); // A
    if (calUnit == null) { // A
        throw new ParserException("Illegal time unit:" // A
                + timeUnit + " - must be days, months or years"); // A
    } // A/*from  w  ww  .ja  v a 2 s  .  c  om*/
    int agoStart = DOMUtils.getAttribute(element, "from", 0); // A
    int agoEnd = DOMUtils.getAttribute(element, "to", 0); // A
    if (agoStart < agoEnd) {
        int oldAgoStart = agoStart;
        agoStart = agoEnd;
        agoEnd = oldAgoStart;
    }
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // B

    Calendar start = Calendar.getInstance(); // B
    start.add(calUnit, agoStart * -1); // B

    Calendar end = Calendar.getInstance(); // B
    end.add(calUnit, agoEnd * -1); // B

    return NumericRangeFilter.newIntRange( // C
            fieldName, // C
            Integer.valueOf(sdf.format(start.getTime())), // C
            Integer.valueOf(sdf.format(end.getTime())), // C
            true, true); // C
}

From source file:io.datalayer.lucene.filter.TimeAgoFilterBuilder.java

License:Apache License

@Override
public Filter getFilter(Element element) throws ParserException {

    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(element, "fieldName");
    String timeUnit = DOMUtils.getAttribute(element, "timeUnit", "days");
    Integer calUnit = timeUnits.get(timeUnit);
    if (calUnit == null) {
        throw new ParserException("Illegal time unit:" + timeUnit + " - must be days, months or years");
    }/*  w ww.j  ava 2 s  .  c o m*/
    int agoStart = DOMUtils.getAttribute(element, "from", 0);
    int agoEnd = DOMUtils.getAttribute(element, "to", 0);
    if (agoStart < agoEnd) {
        int oldAgoStart = agoStart;
        agoStart = agoEnd;
        agoEnd = oldAgoStart;
    }
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    Calendar start = Calendar.getInstance();
    start.add(calUnit, agoStart * -1);

    Calendar end = Calendar.getInstance();
    end.add(calUnit, agoEnd * -1);

    return NumericRangeFilter.newIntRange(fieldName, Integer.valueOf(sdf.format(start.getTime())),
            Integer.valueOf(sdf.format(end.getTime())), true, true);
}

From source file:lux.query.parser.NumericRangeQueryBuilder.java

License:Apache License

@Override
public Query getQuery(Element e) throws ParserException {
    String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
    String lowerTerm = DOMUtils.getAttribute(e, "lowerTerm", null);
    String upperTerm = DOMUtils.getAttribute(e, "upperTerm", null);
    boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
    boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
    int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);

    String type = DOMUtils.getAttribute(e, "type", "int");
    try {//  w  w w .ja  v a2 s  . co  m
        Query filter;
        if (type.equalsIgnoreCase("int")) {
            filter = NumericRangeQuery.newIntRange(field, precisionStep,
                    lowerTerm == null ? null : Integer.valueOf(lowerTerm),
                    upperTerm == null ? null : Integer.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("long")) {
            filter = NumericRangeQuery.newLongRange(field, precisionStep,
                    lowerTerm == null ? null : Long.valueOf(lowerTerm),
                    upperTerm == null ? null : Long.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("double")) {
            filter = NumericRangeQuery.newDoubleRange(field, precisionStep,
                    lowerTerm == null ? null : Double.valueOf(lowerTerm),
                    upperTerm == null ? null : Double.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("float")) {
            filter = NumericRangeQuery.newFloatRange(field, precisionStep,
                    lowerTerm == null ? null : Float.valueOf(lowerTerm),
                    upperTerm == null ? null : Float.valueOf(upperTerm), lowerInclusive, upperInclusive);
        } else {
            throw new ParserException("type attribute must be one of: [long, int, double, float]");
        }
        return filter;
    } catch (NumberFormatException nfe) {
        throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
    }
}

From source file:org.apache.solr.search.ApacheLuceneSolrNearQueryBuilder.java

License:Apache License

public SpanQuery getSpanQuery(Element e) throws ParserException {
    final String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
    final SpanQuery[] spanQueries = new SpanQuery[] { new SpanTermQuery(new Term(fieldName, "Apache")),
            new SpanTermQuery(new Term(fieldName, "Lucene")), new SpanTermQuery(new Term(fieldName, "Solr")) };
    final int slop = 42;
    final boolean inOrder = false;
    return new SpanNearQuery(spanQueries, slop, inOrder);
}

From source file:org.apache.solr.search.ChooseOneWordQueryBuilder.java

License:Apache License

public Query implGetQuery(Element e, boolean span) throws ParserException {
    Term term = null;//from  w w  w.ja  v a2  s  .com
    final String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
    for (Node node = e.getFirstChild(); node != null; node = node.getNextSibling()) {
        if (node.getNodeType() == Node.ELEMENT_NODE && node.getNodeName().equals("Word")) {
            final String word = DOMUtils.getNonBlankTextOrFail((Element) node);
            final Term t = new Term(fieldName, word);
            if (term == null || term.text().length() < t.text().length()) {
                term = t;
            }
        }
    }
    return (span ? new SpanTermQuery(term) : new TermQuery(term));
}

From source file:org.apache.solr.search.LegacyNumericRangeQueryBuilder.java

License:Apache License

@Override
public Query getQuery(Element e) throws ParserException {
    String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
    final String lowerTerm = DOMUtils.getAttribute(e, "lowerTerm", null);
    final String upperTerm = DOMUtils.getAttribute(e, "upperTerm", null);
    boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
    boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
    int precisionStep = DOMUtils.getAttribute(e, "precisionStep", LegacyNumericUtils.PRECISION_STEP_DEFAULT);

    String type = DOMUtils.getAttribute(e, "type", "int");
    try {// w  ww  .j  ava  2 s.c  o m
        Query filter;
        if (type.equalsIgnoreCase("int")) {
            filter = LegacyNumericRangeQuery.newIntRange(field, precisionStep,
                    (lowerTerm == null ? null : Integer.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Integer.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("long")) {
            filter = LegacyNumericRangeQuery.newLongRange(field, precisionStep,
                    (lowerTerm == null ? null : Long.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Long.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("double")) {
            filter = LegacyNumericRangeQuery.newDoubleRange(field, precisionStep,
                    (lowerTerm == null ? null : Double.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Double.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else if (type.equalsIgnoreCase("float")) {
            filter = LegacyNumericRangeQuery.newFloatRange(field, precisionStep,
                    (lowerTerm == null ? null : Float.valueOf(lowerTerm)),
                    (upperTerm == null ? null : Float.valueOf(upperTerm)), lowerInclusive, upperInclusive);
        } else {
            throw new ParserException("type attribute must be one of: [long, int, double, float]");
        }
        return filter;
    } catch (NumberFormatException nfe) {
        throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
    }
}