Example usage for org.apache.lucene.search TermRangeQuery TermRangeQuery

List of usage examples for org.apache.lucene.search TermRangeQuery TermRangeQuery

Introduction

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

Prototype

public TermRangeQuery(String field, BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower,
        boolean includeUpper) 

Source Link

Document

Constructs a query selecting all terms greater/equal than lowerTerm but less/equal than upperTerm.

Usage

From source file:SearcherTest.java

/**
 * TermRangeQuery /*from w  w w .j  a  va2 s.  c  o m*/
 * TermRangeQuery???
 * ?ASC??ASC?
 * ?ASC??
 * ASC??TermRangeQuery
 * ?NumericRangeQuery
 * ?????
 *
 * @throws Exception
 */
@Test
public void testTermRangeQuery() throws Exception {
    String searchField = "contents";
    String q = "1000001----1000002";
    String lowerTermString = "1000001";
    String upperTermString = "1000003";
    /**
     * field  
     * lowerterm -
     *upperterm -?
     *includelower -lowerterm
     *includeupper -upperterm
     *https://yq.aliyun.com/articles/45353
     */
    Query query = new TermRangeQuery(searchField, new BytesRef(lowerTermString), new BytesRef(upperTermString),
            true, true);
    TopDocs hits = is.search(query, 10);
    System.out.println("? '" + q + "'" + hits.totalHits + "");
    for (ScoreDoc scoreDoc : hits.scoreDocs) {
        Document doc = is.doc(scoreDoc.doc);
        System.out.println(doc.get("fullPath"));
    }
}

From source file:aos.lucene.search.advanced.IndexSearcherTest.java

License:Apache License

public void testMulti() throws Exception {

    IndexSearcher searcher = new IndexSearcher(searchers);

    TermRangeQuery query = new TermRangeQuery("animal", //
            "h", //
            "t", //
            true, true);// #3

    TopDocs hits = searcher.search(query, 10);
    assertEquals("tarantula not included", 12, hits.totalHits);
}

From source file:aos.lucene.search.msc.TermRangeQueryTest.java

License:Apache License

public void testTermRangeQuery() throws Exception {
    Directory dir = TestUtil.getBookIndexDirectory();
    IndexSearcher searcher = new IndexSearcher(dir);
    TermRangeQuery query = new TermRangeQuery("title2", "d", "j", true, true);

    TopDocs matches = searcher.search(query, 100);
    /*/*w w w .j  a v  a2  s  .c om*/
    for(int i=0;i<matches.totalHits;i++) {
      LOGGER.info("match " + i + ": " + searcher.doc(matches.scoreDocs[i].doc).get("title2"));
    }
    */
    assertEquals(3, matches.totalHits);
    searcher.close();
    dir.close();
}

From source file:cc.pp.analyzer.ik.query.IKQueryExpressionParser.java

License:Apache License

/**
 * TermRangeQuery//from  www . jav  a 2 s .co  m
 * @param elements
 * @return
 */
private TermRangeQuery toTermRangeQuery(Element fieldNameEle, LinkedList<Element> elements) {

    boolean includeFirst = false;
    boolean includeLast = false;
    String firstValue = null;
    String lastValue = null;
    //?[{
    Element first = elements.getFirst();
    if ('[' == first.type) {
        includeFirst = true;
    } else if ('{' == first.type) {
        includeFirst = false;
    } else {
        throw new IllegalStateException("?");
    }
    //??]}
    Element last = elements.getLast();
    if (']' == last.type) {
        includeLast = true;
    } else if ('}' == last.type) {
        includeLast = false;
    } else {
        throw new IllegalStateException("?, RangeQuery??");
    }
    if (elements.size() < 4 || elements.size() > 5) {
        throw new IllegalStateException("?, RangeQuery ");
    }
    //
    Element e2 = elements.get(1);
    if ('\'' == e2.type) {
        firstValue = e2.toString();
        //
        Element e3 = elements.get(2);
        if (',' != e3.type) {
            throw new IllegalStateException("?, RangeQuery?");
        }
        //
        Element e4 = elements.get(3);
        if ('\'' == e4.type) {
            lastValue = e4.toString();
        } else if (e4 != last) {
            throw new IllegalStateException("?RangeQuery?");
        }
    } else if (',' == e2.type) {
        firstValue = null;
        //
        Element e3 = elements.get(2);
        if ('\'' == e3.type) {
            lastValue = e3.toString();
        } else {
            throw new IllegalStateException("?RangeQuery?");
        }

    } else {
        throw new IllegalStateException("?, RangeQuery?");
    }

    /**
     * lucene4.6?
     */
    TermRangeQuery query = null;
    try {
        query = new TermRangeQuery(fieldNameEle.toString(), new BytesRef(firstValue.getBytes("UTF8")),
                new BytesRef(lastValue.getBytes("UTF8")), includeFirst, includeLast);
    } catch (UnsupportedEncodingException e) {
        throw new IllegalStateException("?, ??");
    }
    return query;
}

From source file:com.aliasi.lingmed.medline.MedlineSearcherImpl.java

License:Lingpipe license

/**      
 * Find all MedlineCitations published in the range fromYear, toYear, inclusive.
 *///from  ww w . ja  v a 2 s  . c o  m
public SearchResults<MedlineCitation> getCitationsInYearRange(String fromYear, String toYear)
        throws DaoException {

    if (!isYear(fromYear) || !isYear(toYear) || fromYear.compareTo(toYear) > 0) {
        throw new DaoException("bad year search range: " + fromYear + ", " + toYear);
    }
    TermRangeQuery rangeQuery = new TermRangeQuery(Fields.DATE_YEAR_FIELD, fromYear, toYear, true, true);
    return search(rangeQuery);
}

From source file:com.b2international.index.lucene.IndexFieldBase.java

License:Apache License

@Override
public final Query toExistsQuery() {
    return new TermRangeQuery(fieldName(), null, null, true, true);
}

From source file:com.bewsia.script.safe.lucene.SEntity.java

License:Open Source License

public TermRangeQuery newTermRangeQuery(String field, String lowerTerm, String upperTerm, boolean includeLower,
        boolean includeUpper) {
    return new TermRangeQuery(field, lowerTerm, upperTerm, includeLower, includeUpper);
}

From source file:com.esri.gpt.catalog.lucene.DatastoreField.java

License:Apache License

/**
 * Makes a range query.// w  ww. jav a 2s .  c o m
 * <p/>
 * Sub-classes should override this method if values need to be converted
 * for a search (ex. Doubles, Longs, Timestamps, ...).
 * <p/>
 * The default behavior is to return a new TermRangeQuery.
 * @param literalLowerValue the literal lower boundary value
 * @param literalUpperValue the literal upper boundary value
 * @param lowerBoundaryIsInclusive (>= versus >)
 * @param upperBoundaryIsInclusive (<= versus <)
 * @throws DiscoveryException if the supplied value cannot be converted
 */
protected Query makeRangeQuery(String literalLowerValue, String literalUpperValue,
        boolean lowerBoundaryIsInclusive, boolean upperBoundaryIsInclusive) throws DiscoveryException {
    return new TermRangeQuery(this.getName(), literalLowerValue, literalUpperValue, lowerBoundaryIsInclusive,
            upperBoundaryIsInclusive);
}

From source file:com.esri.gpt.catalog.lucene.DiscoveryClauseAdapter.java

License:Apache License

/**
 * Appends a null-check query to the active boolean query.
 * @param activeBooleanQuery the active Lucene boolean query
 * @param comparisonFieldName the name of the stored, non-tokenized field to be checked
 * @throws DiscoveryException if an invalid clause is encountered
 *//*from ww w  .  j  a  v  a  2 s .c o  m*/
protected void appendNullCheck(BooleanQuery activeBooleanQuery, String comparisonFieldName)
        throws DiscoveryException {
    comparisonFieldName = Val.chkStr(comparisonFieldName);
    if (comparisonFieldName.length() == 0) {
        throw new IllegalArgumentException("An comparisonFieldName was not supplied.");
    } else {
        appendQuery(activeBooleanQuery, new LogicalClause.LogicalNot(),
                new TermRangeQuery(comparisonFieldName, null, null, false, false));
    }
}

From source file:com.esri.gpt.catalog.lucene.LowerCaseField.java

License:Apache License

/**
 * Makes a range query.// ww w  .j  a va2s .  c om
 * @param literalLowerValue the literal lower boundary value
 * @param literalUpperValue the literal upper boundary value
 * @param lowerBoundaryIsInclusive (>= versus >)
 * @param upperBoundaryIsInclusive (<= versus <)
 * @throws DiscoveryException if the supplied value cannot be converted
 */
@Override
protected Query makeRangeQuery(String literalLowerValue, String literalUpperValue,
        boolean lowerBoundaryIsInclusive, boolean upperBoundaryIsInclusive) throws DiscoveryException {
    if (literalLowerValue != null)
        literalLowerValue = literalLowerValue.toLowerCase();
    if (literalUpperValue != null)
        literalUpperValue = literalUpperValue.toLowerCase();
    return new TermRangeQuery(this.getName(), literalLowerValue, literalUpperValue, lowerBoundaryIsInclusive,
            upperBoundaryIsInclusive);
}