List of usage examples for org.apache.solr.client.solrj SolrQuery set
public ModifiableSolrParams set(String name, String... val)
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); }