Example usage for org.apache.solr.client.solrj SolrQuery set

List of usage examples for org.apache.solr.client.solrj SolrQuery set

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery set.

Prototype

public ModifiableSolrParams set(String name, String... val) 

Source Link

Document

Replace any existing parameter with the given name.

Usage

From source file:org.phenotips.vocabulary.internal.solr.SpanishHPOTranslationTest.java

License:Open Source License

@Test
public void queriesAreExtendedToIncludeSpanishFieldsWhenLocaleIsEsES() {
    when(this.localizationContext.getCurrentLocale()).thenReturn(new Locale("es", "ES"));
    SolrQuery query = new SolrQuery("seizures");
    query.set(DisMaxParams.QF, "name");
    query.set(DisMaxParams.PF, "name");
    this.component.extendQuery(query, this.vocabulary);
    Assert.assertEquals("name name_es^60 synonym_es^45 def_es^12 ", query.get(DisMaxParams.PF));
    Assert.assertEquals("name name_es^30 synonym_es^21 def_es^6 ", query.get(DisMaxParams.QF));
}

From source file:org.phenotips.vocabulary.translation.AbstractXliffTranslatedVocabularyExtension.java

License:Open Source License

@Override
public void extendQuery(SolrQuery query, Vocabulary vocabulary) {
    if (!isCurrentLocaleTargeted()) {
        return;//  w  ww.  ja v a 2  s . co m
    }
    Locale targetLocale = getTargetLocale();
    if (StringUtils.isNotBlank(query.get(DisMaxParams.PF))) {
        try (Formatter f = new Formatter()) {
            f.out().append(query.get(DisMaxParams.PF));
            f.format(" name_%1$s^60 synonym_%1$s^45 def_%1$s^12 ", targetLocale);
            query.set(DisMaxParams.PF, f.toString());
        } catch (IOException ex) {
            // Shouldn't happen
            this.logger.warn(
                    "Unexpected exception while formatting SolrQuery PF for vocabulary [{}] and locale [{}]: {}",
                    vocabulary.getIdentifier(), targetLocale, ex.getMessage());
        }
    }
    if (StringUtils.isNotBlank(query.get(DisMaxParams.QF))) {
        try (Formatter f = new Formatter()) {
            f.out().append(query.get(DisMaxParams.QF));
            f.format(" name_%1$s^30 synonym_%1$s^21 def_%1$s^6 ", targetLocale);
            query.set(DisMaxParams.QF, f.toString());
        } catch (IOException ex) {
            // Shouldn't happen
            this.logger.warn(
                    "Unexpected exception while formatting SolrQuery QF for vocabulary [{}] and locale [{}]: {}",
                    vocabulary.getIdentifier(), targetLocale, ex.getMessage());
        }
    }
}

From source file:org.phenotips.vocabulary.translation.AbstractXliffTranslatedVocabularyExtensionTest.java

License:Open Source License

@Test
public void queryIsExtendedWithLocalizedFields() throws ComponentLookupException {
    LocalizationContext ctx = this.mocker.getInstance(LocalizationContext.class);
    when(ctx.getCurrentLocale()).thenReturn(Locale.forLanguageTag("es"));
    SolrQuery query = new SolrQuery();
    query.set(DisMaxParams.PF, "name^20 nameSpell^36 nameExact^100 namePrefix^30 "
            + "synonym^15 synonymSpell^25 synonymExact^70 synonymPrefix^20 " + "text^3 textSpell^5");
    query.set(DisMaxParams.QF,//from   ww  w .j a v  a2 s . c  o m
            "name^10 nameSpell^18 nameStub^5 synonym^6 synonymSpell^10 synonymStub^3 text^1 textSpell^2 textStub^0.5");
    this.extension.extendQuery(query, this.vocabularyInstance);

    Assert.assertEquals("name^20 nameSpell^36 nameExact^100 namePrefix^30 "
            + "synonym^15 synonymSpell^25 synonymExact^70 synonymPrefix^20 " + "text^3 textSpell^5 "
            + "name_es^60 synonym_es^45 def_es^12 ", query.get(DisMaxParams.PF));
    Assert.assertEquals(
            "name^10 nameSpell^18 nameStub^5 synonym^6 synonymSpell^10 synonymStub^3 text^1 textSpell^2 textStub^0.5"
                    + " name_es^30 synonym_es^21 def_es^6 ",
            query.get(DisMaxParams.QF));
}

From source file:org.phenotips.vocabulary.translation.AbstractXliffTranslatedVocabularyExtensionTest.java

License:Open Source License

@Test
public void queryIsExtendedWhenCurrentLanguageIsMoreSpecific() throws ComponentLookupException {
    LocalizationContext ctx = this.mocker.getInstance(LocalizationContext.class);
    when(ctx.getCurrentLocale()).thenReturn(Locale.forLanguageTag("es-US"));
    SolrQuery query = new SolrQuery();
    query.set(DisMaxParams.PF, "name^20 nameSpell^36 nameExact^100 namePrefix^30 "
            + "synonym^15 synonymSpell^25 synonymExact^70 synonymPrefix^20 " + "text^3 textSpell^5");
    query.set(DisMaxParams.QF,/*from w w w.  ja v  a2 s. c  o m*/
            "name^10 nameSpell^18 nameStub^5 synonym^6 synonymSpell^10 synonymStub^3 text^1 textSpell^2 textStub^0.5");
    this.extension.extendQuery(query, this.vocabularyInstance);

    Assert.assertEquals("name^20 nameSpell^36 nameExact^100 namePrefix^30 "
            + "synonym^15 synonymSpell^25 synonymExact^70 synonymPrefix^20 " + "text^3 textSpell^5 "
            + "name_es^60 synonym_es^45 def_es^12 ", query.get(DisMaxParams.PF));
    Assert.assertEquals(
            "name^10 nameSpell^18 nameStub^5 synonym^6 synonymSpell^10 synonymStub^3 text^1 textSpell^2 textStub^0.5"
                    + " name_es^30 synonym_es^21 def_es^6 ",
            query.get(DisMaxParams.QF));
}

From source file:org.phenotips.vocabulary.translation.AbstractXliffTranslatedVocabularyExtensionTest.java

License:Open Source License

@Test
public void queryIsUnmodifiedWhenLanguageIsNotSupported() throws ComponentLookupException {
    LocalizationContext ctx = this.mocker.getInstance(LocalizationContext.class);
    when(ctx.getCurrentLocale()).thenReturn(Locale.forLanguageTag("fr"));
    SolrQuery query = new SolrQuery();
    query.set(DisMaxParams.PF, "name^20 nameSpell^36 nameExact^100 namePrefix^30 "
            + "synonym^15 synonymSpell^25 synonymExact^70 synonymPrefix^20 " + "text^3 textSpell^5");
    query.set(DisMaxParams.QF,/*from   www.j av  a2 s  .  c  o m*/
            "name^10 nameSpell^18 nameStub^5 synonym^6 synonymSpell^10 synonymStub^3 text^1 textSpell^2 textStub^0.5");
    this.extension.extendQuery(query, this.vocabularyInstance);

    Assert.assertEquals(
            "name^20 nameSpell^36 nameExact^100 namePrefix^30 "
                    + "synonym^15 synonymSpell^25 synonymExact^70 synonymPrefix^20 " + "text^3 textSpell^5",
            query.get(DisMaxParams.PF));
    Assert.assertEquals(
            "name^10 nameSpell^18 nameStub^5 synonym^6 synonymSpell^10 synonymStub^3 text^1 textSpell^2 textStub^0.5",
            query.get(DisMaxParams.QF));
}

From source file:org.schedoscope.metascope.index.SolrQueryExecutor.java

License:Apache License

/**
 * Perform a query on the metascope solr index. Builds up the query string
 * from the given parameters and sends request to solr server
 * //w  w  w . ja  va 2  s  .  c o m
 * @param params
 *          the parameters which are included in the filter query
 * @return a SolrQueryResult object containing the result of the query
 */
public SolrQueryResult query(Map<String, String> params) {
    SolrQuery query = new SolrQuery();

    /* enable facetting */
    query.setFacet(true);

    /* list of all filters; key: name to display, value: entity parameter */
    List<SolrQueryParameter> filter = new ArrayList<SolrQueryParameter>();

    /* list of partition filter */
    List<SolrQueryParameter> partitionFilter = new ArrayList<SolrQueryParameter>();

    /*
     * list of filter which have been set by the user (key = filtername, value =
     * list of selections)
     */
    Map<String, List<String>> activeFilterValues = new HashMap<String, List<String>>();

    /*
     * determine on which type is searched for (either 'Table' or 'Partition')
     */
    String typeFilterValue = params.get(TYPE);
    filter.add(new SolrQueryParameter(FILTER_TYPE, TYPE, FilterType.EXCLUSIVE, FacetSort.COUNT));
    if (typeFilterValue != null && typeFilterValue.equalsIgnoreCase(TYPE_PARTITION)) {
        typeFilterValue = TYPE_PARTITION;
        for (String parameter : fieldEntityService.findDistinctParameters()) {
            partitionFilter.add(new SolrQueryParameter("Parameter: " + parameter, parameter + "_s",
                    FilterType.AND, FacetSort.INDEX));
        }
        for (SolrQueryParameter pFilter : partitionFilter) {
            query.addFacetField(pFilter.getName());
            query.add("f." + pFilter.getName() + ".facet.sort", "index");
            String filterValue = params.get(pFilter.getName());
            if (filterValue != null && !filterValue.isEmpty()) {
                query.addFilterQuery(pFilter.getName() + ":" + "(" + filterValue.replace(",", " AND ") + ")");
            }

        }
    } else {
        typeFilterValue = TYPE_TABLE;
    }
    query.addFilterQuery("{!tag=" + TYPE + "}" + TYPE + ":" + typeFilterValue);
    query.addFacetField("{!ex=" + TYPE + "}" + TYPE);

    /* set solr search query parameter 'q' */
    String searchQueryValue = params.get(URLUtil.SEARCH_QUERY_PARAM);
    if (searchQueryValue == null || searchQueryValue.isEmpty()) {
        searchQueryValue = "*";
        query.setQuery(searchQueryValue);
    } else {
        String[] queryTerms = searchQueryValue.trim().split(" ");
        String queryTerm = "";
        for (String term : queryTerms) {
            if (term.isEmpty()) {
                continue;
            }

            if (!queryTerm.isEmpty()) {
                queryTerm += " AND ";
            }
            queryTerm += "*" + term + "*";
        }
        query.setQuery(queryTerm);
        query.setHighlight(true);
        query.setHighlightSimplePre("<b>");
        query.setHighlightSimplePost("</b>");
        query.setHighlightSnippets(100);
        query.set("hl.fl", "*");
    }

    /* set the remaining filters */
    for (SolrQueryParameter queryFilter : facetFields) {
        filter.add(queryFilter);
        String value = params.get(queryFilter.getName());

        String filterQuery = "";
        String facetField = "";
        if (queryFilter.isExcludeFromFacet()) {
            if (value != null) {
                String[] multipleFilter = value.split(",");
                value = "(";
                for (int i = 0; i < multipleFilter.length; i++) {
                    String filterValue = cleanseValue(multipleFilter[i]).replace(" ", "*");
                    value += "(" + filterValue + ")";
                    if (i < multipleFilter.length - 1) {
                        value += " " + getOperator(queryFilter.getFilterType()) + " ";
                    }
                }
                value += ")";
            }
            filterQuery = "{!tag=" + queryFilter.getName() + "}" + queryFilter.getName() + ":" + value;
            facetField = "{!ex=" + queryFilter.getName() + "}" + queryFilter.getName();
        } else {
            if (value != null) {
                String[] multipleFilter = value.split(",");
                value = "(";
                for (int i = 0; i < multipleFilter.length; i++) {
                    String filterValue = cleanseValue(multipleFilter[i]).replace(" ", "*");
                    value += "(" + filterValue + ")";
                    if (i < multipleFilter.length - 1) {
                        value += " " + getOperator(queryFilter.getFilterType()) + " ";
                    }
                }
                value += ")";
            }
            filterQuery = queryFilter.getName() + ":" + value;
            facetField = queryFilter.getName();
        }

        if (value != null && !value.isEmpty()) {
            query.addFilterQuery(filterQuery);
        }
        query.addFacetField(facetField);

        if (queryFilter.getFacetSort().equals(FacetSort.INDEX)) {
            query.add("f." + queryFilter.getName() + ".facet.sort", "index");
        }
        query.add("f." + queryFilter.getName() + ".facet.limit", "-1");
    }

    /* set facet queries */
    Map<String, String> facetQueryMap = new HashMap<String, String>();
    long now = System.currentTimeMillis() / 1000;
    for (SolrFacetQuery solrFacetQuery : facetQueries) {
        for (SolrHourRange range : solrFacetQuery.getRanges()) {
            long from = range.getFrom() == Long.MAX_VALUE ? 0 : now - (range.getFrom() * 3600);
            String facetQueryString = solrFacetQuery.getName() + ":[" + from + " TO " + now + "]";
            query.addFacetQuery("{!ex=" + solrFacetQuery.getName() + "}" + facetQueryString);
            facetQueryMap.put(solrFacetQuery.getName() + range.getName(), facetQueryString);
        }
        String value = params.get(solrFacetQuery.getName());
        if (value != null) {
            String fq = "{!tag=" + solrFacetQuery.getName() + "}"
                    + facetQueryMap.get(solrFacetQuery.getName() + value);
            query.addFilterQuery(fq);
        }
    }

    /* always sort the entities (for a deterministic view) */
    query.setSort(ID, ORDER.asc);

    /* set pagination information */
    int page = getPageParameter(params);
    int elements = getElementsParameter(params);
    query.setRows(elements);
    query.setStart((page - 1) * elements);

    /* execute the query */
    QueryResponse queryResponse = null;
    try {
        queryResponse = solrClient.query(query);
    } catch (Exception e) {
        e.printStackTrace();
    }

    SolrDocumentList list = queryResponse.getResults();

    /* get table / view entities from local repository */
    List<SolrQueryResultEntity> resultEntities = new LinkedList<SolrQueryResultEntity>();
    String resultType = "";
    for (SolrDocument solrDocument : list) {
        String id = (String) solrDocument.get(ID);

        if (typeFilterValue.equalsIgnoreCase(TYPE_PARTITION)) {
            if (!searchQueryValue.equals("*")) {
                resultEntities.add(new SolrQueryResultEntity(viewEntityService.findByUrlPath(id),
                        queryResponse.getHighlighting().get(id)));
            } else {
                resultEntities.add(new SolrQueryResultEntity(viewEntityService.findByUrlPath(id)));
            }
            resultType = TYPE_PARTITION;
        } else if (typeFilterValue.equalsIgnoreCase(TYPE_TABLE)) {
            if (!searchQueryValue.equals("*")) {
                resultEntities.add(new SolrQueryResultEntity(tableEntityService.findByFqdn(id),
                        queryResponse.getHighlighting().get(id)));
            } else {
                resultEntities.add(new SolrQueryResultEntity(tableEntityService.findByFqdn(id)));
            }
        }
    }
    if (resultType.isEmpty()) {
        resultType = TYPE_TABLE;
    }

    filter.addAll(partitionFilter);

    /* get the facet values and counts */
    Map<String, List<SolrFacet>> facetValues = new HashMap<String, List<SolrFacet>>();
    for (SolrQueryParameter f : filter) {
        if (!f.getName().equals(URLUtil.SEARCH_QUERY_PARAM)) {
            List<SolrFacet> values = new ArrayList<SolrFacet>();
            FacetField facet = queryResponse.getFacetField(f.getName());
            for (Count count : facet.getValues()) {
                values.add(new SolrFacet(count.getName(), count.getCount()));
            }
            facetValues.put(f.getName(), values);
        }
    }

    /* remove the type filter */
    filter.remove(0);

    for (SolrFacetQuery solrFacetQuery : facetQueries) {
        filter.add(new SolrQueryParameter(solrFacetQuery.getDisplayName(), solrFacetQuery.getName(),
                FilterType.EXCLUSIVE));
        List<SolrFacet> values = new ArrayList<SolrFacet>();
        for (SolrHourRange range : solrFacetQuery.getRanges()) {
            long facetQueryCount = getFacetQueryCount(queryResponse, "{!ex=" + solrFacetQuery.getName() + "}"
                    + facetQueryMap.get(solrFacetQuery.getName() + range.getName()));
            values.add(new SolrFacet(range.getName(), facetQueryCount));
        }
        facetValues.put(solrFacetQuery.getName(), values);
    }

    /* get the active filter values which have been selected by the user */
    addToActiveFilterValues(activeFilterValues, params, filter);

    /* build and return the result */
    SolrQueryResult result = new SolrQueryResult().withResultEntities(resultEntities).withResultType(resultType)
            .withFilters(filter).withFacetValues(facetValues).withActiveFilterValues(activeFilterValues)
            .withSearchQuery(searchQueryValue).withPage(page).withElements(elements)
            .withTotalPages((int) Math.ceil(((double) list.getNumFound()) / elements))
            .withTotalResults(list.getNumFound());
    return result;
}

From source file:org.sindice.siren.demo.IndexQueryNTriple.java

License:Open Source License

/**
 * Query the indexed csv data using Tabular query, with the parameter {@link SirenParams#TQ}.
 * @throws SolrServerException//from   w  w w. j a  v a2s  .  c o  m
 */
public void query() throws SolrServerException {
    System.out.println("Query: galway");
    final SolrQuery query1 = new SolrQuery();
    query1.setQueryType("siren");
    query1.setQuery("galway"); // keyword query
    final QueryResponse response1 = server.query(query1);
    for (SolrDocument d : response1.getResults()) {
        System.out.println(d);
    }
    System.out.println();

    System.out.println("Query: * <name> 'john AND gartner'");
    final SolrQuery query2 = new SolrQuery();
    query2.setQueryType("siren");
    query2.set(SirenParams.NQ, "* <name> 'john AND gartner'"); // ntriple query
    final QueryResponse response2 = server.query(query2);
    for (SolrDocument d : response2.getResults()) {
        System.out.println(d);
    }
    System.out.println();

    System.out.println("Query: * <workplace> <galway> AND * <type> <student> AND * <age> \"26\"");
    final SolrQuery query3 = new SolrQuery();
    query3.setQueryType("siren");
    query3.set(SirenParams.NQ, "* <workplace> <galway> AND * <type> <student> AND * <age> \"26\""); // ntriple query
    final QueryResponse response3 = server.query(query3);
    for (SolrDocument d : response3.getResults()) {
        System.out.println(d);
    }
    System.out.println();

    System.out.println("Query: galway AND * <type> <student>");
    final SolrQuery query4 = new SolrQuery();
    query4.setQueryType("siren");
    query4.setQuery("galway");
    query4.set(SirenParams.NQ, "* <type> <student>"); // keyword and ntriple query
    final QueryResponse response4 = server.query(query4);
    for (SolrDocument d : response4.getResults()) {
        System.out.println(d);
    }
    System.out.println();
}

From source file:org.sindice.siren.demo.IndexQueryNTripleAndTabular.java

License:Open Source License

/**
 * Query the indexed csv data using Tabular query, with the parameter {@link SirenParams#TQ}.
 * @throws SolrServerException//from   w ww. ja v  a 2s.co  m
 */
public void query() throws SolrServerException {
    System.out.println("Query: [0]'conference1'");
    final SolrQuery query1 = new SolrQuery();
    query1.setQueryType("siren");
    query1.set(SirenParams.TQ, "[0]'conference1'"); // tabular query
    final QueryResponse response1 = server.query(query1);
    for (SolrDocument d : response1.getResults()) {
        System.out.println(d);
    }
    System.out.println();

    System.out.println("Query: * <name> 'john AND gartner'");
    final SolrQuery query2 = new SolrQuery();
    query2.setQueryType("siren");
    query2.set(SirenParams.NQ, "* <name> 'john AND gartner'"); // ntriple query
    final QueryResponse response2 = server.query(query2);
    for (SolrDocument d : response2.getResults()) {
        System.out.println(d);
    }
    System.out.println();

    System.out.println("Query: * <type> <student> AND [2]'[* TO 2010]'^^<xsd:int>");
    final SolrQuery query3 = new SolrQuery();
    query3.setQueryType("siren");
    query3.set(SirenParams.NQ, "* <type> <student>"); // ntriple query
    query3.set(SirenParams.TQ, "[2]'[* TO 2010]'^^<xsd:int>"); // tabular query
    final QueryResponse response3 = server.query(query3);
    for (SolrDocument d : response3.getResults()) {
        System.out.println(d);
    }
    System.out.println();
}

From source file:org.sindice.siren.demo.IndexQueryTabular.java

License:Open Source License

/**
 * Query the indexed csv data using Tabular query, with the parameter {@link SirenParams#TQ}.
 * @throws SolrServerException//from w w  w.  j  a  v a2 s .  com
 */
public void query() throws SolrServerException {
    System.out.println("[2]\"heliport\"");
    final SolrQuery query1 = new SolrQuery();
    query1.setQueryType("siren");
    query1.set(SirenParams.TQ, "[2]\"heliport\""); // tabular query
    final QueryResponse response1 = server.query(query1);
    for (SolrDocument d : response1.getResults()) {
        System.out.println(d);
    }
    System.out.println();

    System.out.println("[2]'heliport OR small_airport' [6]'[1000 TO *]'^^<xsd:double>");
    final SolrQuery query2 = new SolrQuery();
    query2.setQueryType("siren");
    query2.set(SirenParams.TQ, "[2]'heliport OR small_airport' [6]'[1000 TO *]'^^<xsd:double>"); // tabular query
    final QueryResponse response2 = server.query(query2);
    for (SolrDocument d : response2.getResults()) {
        System.out.println(d);
    }
    System.out.println();
}

From source file:org.sindice.siren.solr.qparser.TestDefaultOperator.java

License:Apache License

@Test
public void testQOpParameter() throws IOException, SolrServerException {
    this.addJsonString("1", "{ \"aaa\" : \"bbb ccc\" }");
    this.addJsonString("2", "{ \"aaa\" : \"bbb\" }");
    this.addJsonString("3", "{ \"aaa\" : \"ccc\" }");

    SolrQuery query = new SolrQuery();
    query.setQuery("bbb ccc");
    query.setRequestHandler("keyword");
    query.set(QueryParsing.OP, "OR");
    String[] results = this.search(query, URL_FIELD);
    // Default Operator = OR : all the documents should match
    assertEquals(3, results.length);//from w w w .  java2 s. co  m

    query = new SolrQuery();
    query.setQuery("{ \"node\" : { \"query\" : \"bbb ccc\" } }");
    query.setRequestHandler("json");
    query.set(QueryParsing.OP, "OR");
    results = this.search(query, URL_FIELD);
    // Default Operator = OR : all the documents should match
    assertEquals(3, results.length);
}