List of usage examples for org.apache.solr.common.params SpellingParams SPELLCHECK_COLLATE
String SPELLCHECK_COLLATE
To view the source code for org.apache.solr.common.params SpellingParams SPELLCHECK_COLLATE.
Click Source Link
From source file:org.dspace.discovery.SolrServiceImpl.java
License:BSD License
protected SolrQuery resolveToSolrQuery(Context context, DiscoverQuery discoveryQuery, boolean includeUnDiscoverable) { SolrQuery solrQuery = new SolrQuery(); String query = "*:*"; if (discoveryQuery.getQuery() != null) { query = discoveryQuery.getQuery(); }//from w w w. j a v a2 s. c o m solrQuery.setQuery(query); if (discoveryQuery.isSpellCheck()) { solrQuery.setParam(SpellingParams.SPELLCHECK_Q, query); solrQuery.setParam(SpellingParams.SPELLCHECK_COLLATE, Boolean.TRUE); solrQuery.setParam("spellcheck", Boolean.TRUE); } if (!includeUnDiscoverable) { solrQuery.addFilterQuery("NOT(withdrawn:true)"); solrQuery.addFilterQuery("NOT(discoverable:false)"); } for (int i = 0; i < discoveryQuery.getFilterQueries().size(); i++) { String filterQuery = discoveryQuery.getFilterQueries().get(i); solrQuery.addFilterQuery(filterQuery); } if (discoveryQuery.getDSpaceObjectFilter() != -1) { solrQuery.addFilterQuery("search.resourcetype:" + discoveryQuery.getDSpaceObjectFilter()); } for (int i = 0; i < discoveryQuery.getFieldPresentQueries().size(); i++) { String filterQuery = discoveryQuery.getFieldPresentQueries().get(i); solrQuery.addFilterQuery(filterQuery + ":[* TO *]"); } if (discoveryQuery.getStart() != -1) { solrQuery.setStart(discoveryQuery.getStart()); } if (discoveryQuery.getMaxResults() != -1) { solrQuery.setRows(discoveryQuery.getMaxResults()); } if (discoveryQuery.getSortField() != null) { SolrQuery.ORDER order = SolrQuery.ORDER.asc; if (discoveryQuery.getSortOrder().equals(DiscoverQuery.SORT_ORDER.desc)) order = SolrQuery.ORDER.desc; solrQuery.addSortField(discoveryQuery.getSortField(), order); } for (String property : discoveryQuery.getProperties().keySet()) { List<String> values = discoveryQuery.getProperties().get(property); solrQuery.add(property, values.toArray(new String[values.size()])); } List<DiscoverFacetField> facetFields = discoveryQuery.getFacetFields(); if (0 < facetFields.size()) { //Only add facet information if there are any facets for (DiscoverFacetField facetFieldConfig : facetFields) { String field = transformFacetField(facetFieldConfig, facetFieldConfig.getField(), false); solrQuery.addFacetField(field); // Setting the facet limit in this fashion ensures that each facet can have its own max solrQuery.add("f." + field + "." + FacetParams.FACET_LIMIT, String.valueOf(facetFieldConfig.getLimit())); String facetSort; if (DiscoveryConfigurationParameters.SORT.COUNT.equals(facetFieldConfig.getSortOrder())) { facetSort = FacetParams.FACET_SORT_COUNT; } else { facetSort = FacetParams.FACET_SORT_INDEX; } solrQuery.add("f." + field + "." + FacetParams.FACET_SORT, facetSort); if (facetFieldConfig.getOffset() != -1) { solrQuery.setParam("f." + field + "." + FacetParams.FACET_OFFSET, String.valueOf(facetFieldConfig.getOffset())); } if (facetFieldConfig.getPrefix() != null) { solrQuery.setFacetPrefix(field, facetFieldConfig.getPrefix()); } } List<String> facetQueries = discoveryQuery.getFacetQueries(); for (String facetQuery : facetQueries) { solrQuery.addFacetQuery(facetQuery); } if (discoveryQuery.getFacetMinCount() != -1) { solrQuery.setFacetMinCount(discoveryQuery.getFacetMinCount()); } solrQuery.setParam(FacetParams.FACET_OFFSET, String.valueOf(discoveryQuery.getFacetOffset())); } if (0 < discoveryQuery.getHitHighlightingFields().size()) { solrQuery.setHighlight(true); solrQuery.add(HighlightParams.USE_PHRASE_HIGHLIGHTER, Boolean.TRUE.toString()); for (DiscoverHitHighlightingField highlightingField : discoveryQuery.getHitHighlightingFields()) { solrQuery.addHighlightField(highlightingField.getField() + "_hl"); solrQuery.add("f." + highlightingField.getField() + "_hl." + HighlightParams.FRAGSIZE, String.valueOf(highlightingField.getMaxChars())); solrQuery.add("f." + highlightingField.getField() + "_hl." + HighlightParams.SNIPPETS, String.valueOf(highlightingField.getMaxSnippets())); } } //Add any configured search plugins ! List<SolrServiceSearchPlugin> solrServiceSearchPlugins = new DSpace().getServiceManager() .getServicesByType(SolrServiceSearchPlugin.class); for (SolrServiceSearchPlugin searchPlugin : solrServiceSearchPlugins) { searchPlugin.additionalSearchParameters(context, discoveryQuery, solrQuery); } return solrQuery; }
From source file:org.phenotips.ontology.internal.solr.SolrQueryUtils.java
License:Open Source License
/** * Adds extra parameters to a Solr query for better term searches, including custom options. More specifically, adds * parameters for requesting the score to be included in the results, for requesting a spellcheck result, and sets * the {@code start} and {@code rows} parameters when missing. * * @param originalParams the original Solr parameters to enhance * @param queryOptions extra options to include in the query; these override the default values, but don't override * values already set in the query * @return the enhanced parameters//www .ja va 2s .c o m */ public static SolrParams enhanceParams(SolrParams originalParams, Map<String, String> queryOptions) { if (originalParams == null) { return null; } ModifiableSolrParams newParams = new ModifiableSolrParams(); newParams.set(CommonParams.START, "0"); newParams.set(CommonParams.ROWS, "1000"); newParams.set(CommonParams.FL, "* score"); if (queryOptions != null) { for (Map.Entry<String, String> item : queryOptions.entrySet()) { newParams.set(item.getKey(), item.getValue()); } } for (Map.Entry<String, Object> item : originalParams.toNamedList()) { if (item.getValue() != null && item.getValue() instanceof String[]) { newParams.set(item.getKey(), (String[]) item.getValue()); } else { newParams.set(item.getKey(), String.valueOf(item.getValue())); } } newParams.set("spellcheck", Boolean.toString(true)); newParams.set(SpellingParams.SPELLCHECK_COLLATE, Boolean.toString(true)); return newParams; }
From source file:org.phenotips.ontology.internal.solr.SolrQueryUtilsTest.java
License:Open Source License
@Test public void testEnhanceParamsDefaultValues() { ModifiableSolrParams input = new ModifiableSolrParams(); SolrParams output = SolrQueryUtils.enhanceParams(input); Assert.assertNull(output.get(CommonParams.Q)); Assert.assertEquals("* score", output.get(CommonParams.FL)); Assert.assertEquals(true, output.getBool(SpellingParams.SPELLCHECK_COLLATE)); Assert.assertEquals(0, (int) output.getInt(CommonParams.START)); Assert.assertTrue(output.getInt(CommonParams.ROWS) > 100); }
From source file:org.phenotips.ontology.internal.solr.SolrQueryUtilsTest.java
License:Open Source License
@Test public void testEnhanceParamsDoesntReplaceExistingValues() { ModifiableSolrParams input = new ModifiableSolrParams(); input.set(CommonParams.Q, "field:value"); input.set(CommonParams.FL, "id"); input.set(CommonParams.START, 30);//www .j av a 2 s .co m input.set(CommonParams.ROWS, 10); SolrParams output = SolrQueryUtils.enhanceParams(input); Assert.assertEquals("field:value", output.get(CommonParams.Q)); Assert.assertEquals("id", output.get(CommonParams.FL)); Assert.assertEquals(true, output.getBool(SpellingParams.SPELLCHECK_COLLATE)); Assert.assertEquals(30, (int) output.getInt(CommonParams.START)); Assert.assertEquals(10, (int) output.getInt(CommonParams.ROWS)); }
From source file:org.phenotips.termrequester.db.solr.SolrDatabaseService.java
License:Open Source License
@Override public List<Phenotype> searchPhenotypes(String text) throws IOException { checkUp();/*from ww w . j a va2 s . c o m*/ try { SolrQuery q = new SolrQuery(); String escaped = ClientUtils.escapeQueryChars(text); q.add(CommonParams.Q, escaped); q.add(SpellingParams.SPELLCHECK_Q, text); q.add(DisMaxParams.PF, String.format("%s^20 %s^36 %s^100 %s^30 %s^15 %s^25 %s^70 %s^20 %s^3 %s^5", Schema.NAME, Schema.NAME_SPELL, Schema.NAME_EXACT, Schema.NAME_PREFIX, Schema.SYNONYM, Schema.SYNONYM_SPELL, Schema.SYNONYM_EXACT, Schema.SYNONYM_PREFIX, Schema.TEXT, Schema.TEXT_SPELL)); String qstring = String.format("%s^10 %s^18 %s^5 %s^6 %s^10 %s^3 %s^1 %s^2 %s^0.5", Schema.NAME, Schema.NAME_SPELL, Schema.NAME_STUB, Schema.SYNONYM, Schema.SYNONYM_SPELL, Schema.SYNONYM_STUB, Schema.TEXT, Schema.TEXT, Schema.TEXT_SPELL, Schema.TEXT_STUB); qstring = addStatusFilter(qstring, Phenotype.Status.SYNONYM); q.add(DisMaxParams.QF, qstring); q.add("spellcheck", Boolean.toString(true)); q.add(SpellingParams.SPELLCHECK_COLLATE, Boolean.toString(true)); q.add(SpellingParams.SPELLCHECK_COUNT, "100"); q.add(SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "3"); q.add("lowercaseOperators", Boolean.toString(false)); q.add("defType", "edismax"); QueryResponse resp = server.query(q); List<SolrDocument> results = resp.getResults(); List<Phenotype> retval = new ArrayList<>(results.size()); for (SolrDocument doc : results) { retval.add(mapper.fromDoc(doc)); } return retval; } catch (SolrServerException e) { throw new IOException(e); } }
From source file:org.phenotips.vocabulary.internal.solr.HumanPhenotypeOntology.java
License:Open Source License
private Map<String, String> getStaticSolrParams() { Map<String, String> params = new HashMap<>(); params.put("spellcheck", Boolean.toString(true)); params.put(SpellingParams.SPELLCHECK_COLLATE, Boolean.toString(true)); params.put(SpellingParams.SPELLCHECK_COUNT, "100"); params.put(SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "3"); params.put("lowercaseOperators", Boolean.toString(false)); params.put("defType", "edismax"); return params; }
From source file:org.phenotips.vocabulary.internal.solr.OncoTree.java
License:Open Source License
/** * Given a {@code query} object, adds global query parameters. * * @param query a {@link SolrQuery solr query} object *///from w ww .ja va 2s.c o m private void addGlobalQueryParam(@Nonnull final SolrQuery query) { // Add global query parameters. query.set("spellcheck", Boolean.toString(true)); query.set(SpellingParams.SPELLCHECK_COLLATE, Boolean.toString(true)); query.set(SpellingParams.SPELLCHECK_COUNT, "100"); query.set(SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "3"); query.set("lowercaseOperators", Boolean.toString(false)); query.set("defType", "edismax"); }
From source file:org.phenotips.vocabulary.internal.solr.OrphanetRareDiseaseOntology.java
License:Open Source License
/** * Given a {@code query} object, adds global query parameters. * * @param query a {@link SolrQuery solr query} object * @return the {@code query} with global query parameters added *//*ww w.jav a 2 s . c o m*/ private SolrQuery addGlobalQueryParam(@Nonnull final SolrQuery query) { // Add global query parameters. query.set("spellcheck", Boolean.toString(true)); query.set(SpellingParams.SPELLCHECK_COLLATE, Boolean.toString(true)); query.set(SpellingParams.SPELLCHECK_COUNT, "100"); query.set(SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "3"); query.set("lowercaseOperators", Boolean.toString(false)); query.set("defType", "edismax"); return query; }
From source file:org.phenotips.vocabulary.internal.solr.SolrQueryUtils.java
License:Open Source License
/** * Adds extra parameters to a Solr query for better term searches, including custom options. More specifically, adds * parameters for requesting the score to be included in the results, for requesting a spellcheck result, and sets * the {@code start} and {@code rows} parameters when missing. * * @param originalParams the original Solr parameters to enhance * @param queryOptions extra options to include in the query; these override the default values, but don't override * values already set in the query * @return the enhanced parameters/*from w w w.j ava 2 s. c o m*/ */ public static SolrParams enhanceParams(SolrParams originalParams, Map<String, String> queryOptions) { if (originalParams == null) { return null; } ModifiableSolrParams newParams = new ModifiableSolrParams(); newParams.set(CommonParams.START, "0"); newParams.set(CommonParams.ROWS, "1000"); newParams.set(CommonParams.FL, "* score"); if (queryOptions != null) { for (Map.Entry<String, String> item : queryOptions.entrySet()) { newParams.set(item.getKey(), item.getValue()); } } for (Map.Entry<String, Object> item : originalParams.toNamedList()) { if (item.getValue() != null && item.getValue() instanceof String[]) { newParams.set(item.getKey(), (String[]) item.getValue()); } else { newParams.set(item.getKey(), String.valueOf(item.getValue())); } } if (newParams.get(SPELLCHECK) == null) { newParams.set(SPELLCHECK, Boolean.toString(true)); newParams.set(SpellingParams.SPELLCHECK_COLLATE, Boolean.toString(true)); } return newParams; }
From source file:org.springframework.data.solr.core.query.SpellcheckOptions.java
License:Apache License
/** * If set, Solr will take the best suggestion for each token (if one exists) and construct a new query from the * suggestions./* w ww.ja v a2s.c o m*/ * * @return new {@link SpellcheckOptions} */ public SpellcheckOptions collate() { return createNewAndAppend(SpellingParams.SPELLCHECK_COLLATE, true); }