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

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

Introduction

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

Prototype

public Criteria(Field field) 

Source Link

Document

Creates a new Criteria for the given field

Usage

From source file:com.nixmash.springdata.solr.repository.custom.CustomProductRepositoryImpl.java

@Override
public List<Product> findProductsBySimpleQuery(String userQuery) {

    Query query = new SimpleQuery(userQuery);
    query.addFilterQuery(new SimpleQuery(new Criteria(IProduct.DOCTYPE_FIELD).is(SolrDocType.PRODUCT)));
    query.setRows(1000);/*from   w w  w . j a  v  a2 s  .c om*/

    Page<Product> results = solrTemplate.queryForPage(query, Product.class);
    return results.getContent();
}

From source file:com.nixmash.springdata.solr.repository.custom.CustomProductRepositoryImpl.java

private Criteria createHighlightedNameConditions(String[] words) {
    Criteria conditions = null;//from w w w .  j a va  2 s.c om

    for (String word : words) {
        if (conditions == null) {
            conditions = new Criteria(Product.NAME_FIELD).contains(word);
        } else {
            conditions = conditions.or(new Criteria(Product.NAME_FIELD).contains(word));
        }
    }

    return conditions;
}

From source file:com.nixmash.springdata.solr.repository.custom.CustomProductRepositoryImpl.java

private Criteria createSearchConditions(String[] words) {
    Criteria conditions = null;//  w w  w .  j a va2s  .  c  o m

    for (String word : words) {
        if (conditions == null) {
            conditions = new Criteria(Product.NAME_FIELD).contains(word)
                    .or(new Criteria(Product.CATEGORY_FIELD).contains(word));
        } else {
            conditions = conditions.or(new Criteria(Product.NAME_FIELD).contains(word))
                    .or(new Criteria(Product.CATEGORY_FIELD).contains(word));
        }
    }

    return conditions;
}

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}.
 * // ww  w .j a v 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.opengeoportal.harvester.api.client.solr.SolrSearchParams.java

/**
 * Split wordlist by blank space and create an OR criteria with each
 * resulting word. Words are added using wildcards.
 * /*from   w  w  w  .j  a  v a 2 s . c  o  m*/
 * @param wordList
 *            a string with a list of words
 * @param fieldName
 *            the name of the field where criteria is applied.
 * @return an OR criteria with each word contained in wordlist.
 */
private Criteria splitAndOrCriteria(String wordList, String fieldName) {
    Criteria orCriteria = null;
    String[] words = StringUtils.split(wordList);
    for (String word : words) {
        if (orCriteria == null) {
            orCriteria = new Criteria(fieldName).contains(word);
        } else {
            orCriteria = orCriteria.or(new Criteria(fieldName).contains(word));
        }

    }

    if (orCriteria != null) {
        SimpleQuery query = new SimpleQuery(orCriteria);
        DefaultQueryParser parser = new DefaultQueryParser();
        String queryString = parser.getQueryString(query);
        return new SimpleStringCriteria("(" + queryString + ")");
    } else {
        return null;
    }
}

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

@Test
public void testIs() {
    Criteria criteria = new Criteria("field_1").is("is");
    Assert.assertEquals("field_1", criteria.getField().getName());
    Assert.assertEquals("field_1:is", queryParser.createQueryStringFromCriteria(criteria));
}

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

@Test
public void testMultipleIs() {
    Criteria criteria = new Criteria("field_1").is("is").is("another is");
    Assert.assertEquals("field_1", criteria.getField().getName());
    Assert.assertEquals("field_1:(is \"another is\")", queryParser.createQueryStringFromCriteria(criteria));
}

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

@Test
public void testEndsWith() {
    Criteria criteria = new Criteria("field_1").endsWith("end");

    Assert.assertEquals("field_1", criteria.getField().getName());
    Assert.assertEquals("field_1:*end", queryParser.createQueryStringFromCriteria(criteria));
}