Example usage for org.springframework.data.solr.core.query Criteria where

List of usage examples for org.springframework.data.solr.core.query Criteria where

Introduction

In this page you can find the example usage for org.springframework.data.solr.core.query Criteria where.

Prototype

public static Criteria where(Field field) 

Source Link

Document

Static factory method to create a new Criteria for provided field

Usage

From source file:org.opengeoportal.harvester.api.client.solr.SolrSearchParams.java

/**
 * Transform the record in {@link SolrQuery} executable by an
 * {@link org.apache.solr.client.solrj.impl.HttpSolrServer}.
 * /*from   w ww .  j av  a 2s  . co m*/
 * @return the {@link SolrQuery} built with the data page this.
 */
public SolrQuery toSolrQuery() {
    SolrQuery solrQuery = new SolrQuery();

    if (StringUtils.isNotBlank(customSolrQuery)) {
        solrQuery.setQuery(customSolrQuery);
    } else {
        solrQuery.setQuery("*:*");
        // data repositories
        if (dataRepositories != null && dataRepositories.size() > 0) {
            Criteria institutionCriteria = null;
            for (String institution : dataRepositories) {
                if (institutionCriteria == null) {
                    institutionCriteria = new Criteria(SolrRecord.INSTITUTION).is(institution);
                } else {
                    institutionCriteria = institutionCriteria
                            .or(new Criteria(SolrRecord.INSTITUTION).is(institution));
                }
            }

            SimpleQuery query = new SimpleQuery(institutionCriteria);
            DefaultQueryParser parser = new DefaultQueryParser();
            String queryString = parser.getQueryString(query);
            solrQuery.addFilterQuery(queryString);
        } else {
            solrQuery.addFilterQuery(SolrRecord.INSTITUTION + ":*");
        }

        // theme keywords
        if (StringUtils.isNotBlank(themeKeyword)) {
            solrQuery.addFilterQuery(SolrRecord.THEME_KEYWORDS + ":" + themeKeyword);
            solrQuery.add(PF, SolrRecord.THEME_KEYWORDS + ":'" + themeKeyword + "'^9.0");
            solrQuery.add(PF, SolrRecord.LAYER_DISPLAY_NAME + ":'" + themeKeyword + "'^9.0");
        }
        if (StringUtils.isNotBlank(placeKeyword)) {
            solrQuery.addFilterQuery(SolrRecord.PLACE_KEYWORDS + ":" + placeKeyword);
            solrQuery.add(PF, SolrRecord.PLACE_KEYWORDS + ":'" + placeKeyword + "'^9.0");
        }
        if (StringUtils.isNotBlank(topicCategory)) {
            solrQuery.addFilterQuery(SolrRecord.ISO_TOPIC_CATEGORY + ":" + this.topicCategory);

        }

        if (dateFrom != null || dateTo != null) {
            Criteria contentDateCriteria = Criteria.where(SolrRecord.CONTENT_DATE).between(dateFrom, dateTo);
            SimpleQuery query = new SimpleQuery(contentDateCriteria);
            DefaultQueryParser parser = new DefaultQueryParser();
            String queryString = parser.getQueryString(query);
            solrQuery.addFilterQuery(queryString);

        }
        if (StringUtils.isNotBlank(originator)) {
            String originatorCriteria = splitAndConcatenateUsingOperator(Operator.AND, SolrRecord.ORIGINATOR,
                    originator);
            solrQuery.addFilterQuery(originatorCriteria);
            solrQuery.add(PF, SolrRecord.ORIGINATOR + ":" + originator);
        }
        if (dataTypes != null && dataTypes.size() > 0) {
            StringBuilder concatenatedType = new StringBuilder();
            for (DataType dType : dataTypes) {
                concatenatedType.append(dType.toString().replace(" ", "+")).append(" ");
            }
            String dataTypeCriteria = splitAndConcatenateUsingOperator(Operator.OR, SolrRecord.DATA_TYPE,
                    concatenatedType.toString());
            solrQuery.add("fq", dataTypeCriteria);
        }

        if (excludeRestrictedData) {
            solrQuery.addFilterQuery(SolrRecord.ACCESS + ":" + AccessLevel.Public);
        }

        if (fromSolrTimestamp != null || toSolrTimestamp != null) {
            Criteria solrTimestampCriteria = Criteria.where(SolrRecord.TIMESTAMP).between(fromSolrTimestamp,
                    toSolrTimestamp);
            SimpleQuery query = new SimpleQuery(solrTimestampCriteria);
            DefaultQueryParser parser = new DefaultQueryParser();
            String queryString = parser.getQueryString(query);
            solrQuery.addFilterQuery(queryString);
        }
        // Add bbox filter only if user has not specified a custom solr
        // query.
        buildBoundigBoxQuery(solrQuery);

        String synonymsFilter = generateSynonymsQuery();
        if (StringUtils.isNotBlank(synonymsFilter)) {
            solrQuery.addFilterQuery(synonymsFilter);
        }

    }

    solrQuery.setRows(pageSize);
    solrQuery.setStart(page * pageSize);
    solrQuery.addSort(SortClause.desc("score"));

    return solrQuery;
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-105//w w w  .  j  a  v  a  2s.c om
 */
@Test
public void testNestedOrPartWithAnd() {

    Criteria criteria = Criteria.where("field_1").is("foo")
            .and(Criteria.where("field_2").is("bar").or("field_3").is("roo"))//
            .or(Criteria.where("field_4").is("spring").and("field_5").is("data"));

    Assert.assertEquals("field_1:foo AND (field_2:bar OR field_3:roo) OR (field_4:spring AND field_5:data)",
            queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-105/* w  w  w . j  a v a2  s.  c  o m*/
 */
@Test
public void testNestedOrPartWithAndSomeOtherThings() {

    Criteria criteria = Criteria.where("field_1").is("foo").is("bar")
            .and(Criteria.where("field_2").is("bar").is("lala").or("field_3").is("roo"))
            .or(Criteria.where("field_4").is("spring").and("field_5").is("data"));

    Assert.assertEquals(
            "field_1:(foo bar) AND (field_2:(bar lala) OR field_3:roo) OR (field_4:spring AND field_5:data)",
            queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-105/*  w w  w .  j a  v a 2s  .co  m*/
 */
@Test
public void testMultipleAnd() {
    Criteria criteria = Criteria.where("field_1").is("foo").and("field_2").is("bar").and("field_3").is("roo");

    Assert.assertEquals("field_1:foo AND field_2:bar AND field_3:roo",
            queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-105/*  w  ww  . j av  a 2 s.  co m*/
 */
@Test
public void testMultipleOr() {
    Criteria criteria = Criteria.where("field_1").is("foo").or("field_2").is("bar").or("field_3").is("roo");

    Assert.assertEquals("field_1:foo OR field_2:bar OR field_3:roo",
            queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-105//from w  w w  . j a  v a 2s . c  o m
 */
@Test
public void testEmptyCriteriaShouldBeDefaultedToNotNUll() {
    Criteria criteria = Criteria.where("field_1").is("foo").and("field_2").or("field_3");

    Assert.assertEquals("field_1:foo AND field_2:[* TO *] OR field_3:[* TO *]",
            queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-105/*from   w ww  . j a  v  a 2 s .  c  om*/
 */
@Test
public void testDeepNesting() {

    Criteria criteria = Criteria.where("field_1").is("foo").and(Criteria.where("field_2").is("bar")
            .and("field_3").is("roo")//
            .and(Criteria.where("field_4").is("spring").and("field_5").is("data").or("field_6").is("solr")));

    Assert.assertEquals(
            "field_1:foo AND (field_2:bar AND field_3:roo AND (field_4:spring AND field_5:data OR field_6:solr))",
            queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-196/* w w w.j a  va  2  s  . c o m*/
 */
@Test
public void connectShouldAllowConcatinationOfCriteriaWithAndPreservingDesiredBracketing() {

    Criteria part1 = Criteria.where("z").is("roo");
    Criteria part2 = Criteria.where("x").is("foo").or("y").is("bar");
    Criteria criteria = part1.connect().and(part2);

    Assert.assertEquals("z:roo AND (x:foo OR y:bar)", queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-196//from   w  ww  . j av  a 2 s.  c o m
 */
@Test
public void connectShouldAllowConcatinationOfCriteriaWithAndPreservingDesiredBracketingReverse() {

    Criteria part1 = Criteria.where("z").is("roo");
    Criteria part2 = Criteria.where("x").is("foo").or("y").is("bar");
    Criteria criteria = part2.connect().and(part1);

    Assert.assertEquals("(x:foo OR y:bar) AND z:roo", queryParser.createQueryStringFromNode(criteria));
}

From source file:org.springframework.data.solr.core.DefaultQueryParserTests.java

/**
 * @see DATASOLR-196/*  w  ww. j  a  v a2 s .c  o  m*/
 */
@Test
public void connectShouldAllowConcatinationOfCriteriaWithOrPreservingDesiredBracketing() {

    Criteria part1 = Criteria.where("z").is("roo");
    Criteria part2 = Criteria.where("x").is("foo").or("y").is("bar");
    Criteria criteria = part1.connect().or(part2);

    Assert.assertEquals("z:roo OR (x:foo OR y:bar)", queryParser.createQueryStringFromNode(criteria));
}