List of usage examples for org.apache.solr.common.params HighlightParams MERGE_CONTIGUOUS_FRAGMENTS
String MERGE_CONTIGUOUS_FRAGMENTS
To view the source code for org.apache.solr.common.params HighlightParams MERGE_CONTIGUOUS_FRAGMENTS.
Click Source Link
From source file:nl.knaw.huygens.facetedsearch.AbstractSolrServer.java
License:Open Source License
@Override public Map<String, Object> search(FacetedSearchParameters<?> fsp) throws IndexException { ElaborateSearchParameters sp = (ElaborateSearchParameters) fsp; Log.info("searchparameters={}", sp); queryComposer.compose(sp);/* w w w . ja v a 2 s. co m*/ String queryString = queryComposer.getSearchQuery(); String[] facetFields = getFacetFields(sp); // Log.debug("search({},{})", queryString, sp.getSort()); Map<String, String> textFieldMap = sp.getTextFieldsToSearch(); SolrQuery query = new SolrQuery(); String[] fieldsToReturn = getIndexFieldToReturn(sp.getResultFields()); query.setQuery(queryString)// .setFields(fieldsToReturn)// .setRows(ROWS)// .addFacetField(facetFields)// .setFacetMinCount(1)// .setFacetLimit(FACET_LIMIT); if (queryComposer.mustHighlight()) { query// .setHighlight(true)// .setHighlightSnippets(500)// .setHighlightFragsize(HIGHLIGHT_FRAGSIZE); query.set(HighlightParams.MERGE_CONTIGUOUS_FRAGMENTS, false); query.set(HighlightParams.MAX_CHARS, -1); query.set(HighlightParams.FIELDS, textFieldMap.keySet().toArray(new String[textFieldMap.size()])); query.set(HighlightParams.Q, queryComposer.getHighlightQuery()); } query = setSort(query, sp); Map<String, Object> data = getSearchData(sp, facetFields, query, fieldsToReturn); return data; }
From source file:org.alfresco.repo.search.impl.solr.SolrQueryHTTPClient.java
License:Open Source License
protected void buildHightlightParameters(SearchParameters searchParameters, URLCodec encoder, StringBuilder url) throws UnsupportedEncodingException { if (searchParameters.getHighlight() != null) { url.append("&").append(HighlightParams.HIGHLIGHT + "=true"); url.append("&" + HighlightParams.HIGHLIGHT + ".q=") .append(encoder.encode(searchParameters.getSearchTerm(), "UTF-8")); if (searchParameters.getHighlight().getSnippetCount() != null) { url.append("&").append(HighlightParams.SNIPPETS + "=") .append(searchParameters.getHighlight().getSnippetCount()); }//from w ww . j av a 2 s. co m if (searchParameters.getHighlight().getFragmentSize() != null) { url.append("&").append(HighlightParams.FRAGSIZE + "=") .append(searchParameters.getHighlight().getFragmentSize()); } if (searchParameters.getHighlight().getMaxAnalyzedChars() != null) { url.append("&").append(HighlightParams.MAX_CHARS + "=") .append(searchParameters.getHighlight().getMaxAnalyzedChars()); } if (searchParameters.getHighlight().getMergeContiguous() != null) { url.append("&").append(HighlightParams.MERGE_CONTIGUOUS_FRAGMENTS + "=") .append(searchParameters.getHighlight().getMergeContiguous()); } if (searchParameters.getHighlight().getUsePhraseHighlighter() != null) { url.append("&").append(HighlightParams.USE_PHRASE_HIGHLIGHTER + "=") .append(searchParameters.getHighlight().getUsePhraseHighlighter()); } if (searchParameters.getHighlight().getPrefix() != null) { url.append("&").append(HighlightParams.SIMPLE_PRE + "=") .append(encoder.encode(searchParameters.getHighlight().getPrefix(), "UTF-8")); } if (searchParameters.getHighlight().getPostfix() != null) { url.append("&").append(HighlightParams.SIMPLE_POST + "=") .append(encoder.encode(searchParameters.getHighlight().getPostfix(), "UTF-8")); } if (searchParameters.getHighlight().getFields() != null && !searchParameters.getHighlight().getFields().isEmpty()) { List<String> fieldNames = new ArrayList<>(searchParameters.getHighlight().getFields().size()); for (FieldHighlightParameters aField : searchParameters.getHighlight().getFields()) { ParameterCheck.mandatoryString("highlight field", aField.getField()); fieldNames.add(aField.getField()); if (aField.getSnippetCount() != null) { url.append("&f.").append(encoder.encode(aField.getField(), "UTF-8")) .append("." + HighlightParams.SNIPPETS + "=").append(aField.getSnippetCount()); } if (aField.getFragmentSize() != null) { url.append("&f.").append(encoder.encode(aField.getField(), "UTF-8")) .append("." + HighlightParams.FRAGSIZE + "=").append(aField.getFragmentSize()); } if (aField.getFragmentSize() != null) { url.append("&f.").append(encoder.encode(aField.getField(), "UTF-8")) .append("." + HighlightParams.FRAGSIZE + "=").append(aField.getFragmentSize()); } if (aField.getMergeContiguous() != null) { url.append("&f.").append(encoder.encode(aField.getField(), "UTF-8")) .append("." + HighlightParams.MERGE_CONTIGUOUS_FRAGMENTS + "=") .append(aField.getMergeContiguous()); } if (aField.getPrefix() != null) { url.append("&f.").append(encoder.encode(aField.getField(), "UTF-8")) .append("." + HighlightParams.SIMPLE_PRE + "=") .append(encoder.encode(aField.getPrefix(), "UTF-8")); } if (aField.getPostfix() != null) { url.append("&f.").append(encoder.encode(aField.getField(), "UTF-8")) .append("." + HighlightParams.SIMPLE_POST + "=") .append(encoder.encode(aField.getPostfix(), "UTF-8")); } } url.append("&").append(HighlightParams.FIELDS + "=") .append(encoder.encode(String.join(",", fieldNames), "UTF-8")); } } }
From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java
License:Open Source License
@Test public void highlightingMergeContinuousFragmentsTest() { logger.info("######### MergeContiguous ###########"); SolrServletRequest req = areq(/*from w w w. ja v a2 s .c o m*/ params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT, "true", HighlightParams.Q, "'some long'", HighlightParams.FIELDS, "name", HighlightParams.MERGE_CONTIGUOUS_FRAGMENTS, "true", HighlightParams.SIMPLE_PRE, "{", HighlightParams.SIMPLE_POST, "}", HighlightParams.SNIPPETS, String.valueOf(4), HighlightParams.FRAGSIZE, String.valueOf(40)), "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}"); assertQ(req, "*[count(//lst[@name='highlighting']/lst/arr)=1]", "//lst[@name='highlighting']/lst/arr[@name='name']/str[.='this is {some} {long} text. It has the word long in many places. In fact, it has long on some different fragments. Let us see what happens to long in this case.']"); }