Example usage for org.apache.solr.common.params HighlightParams FIELDS

List of usage examples for org.apache.solr.common.params HighlightParams FIELDS

Introduction

In this page you can find the example usage for org.apache.solr.common.params HighlightParams FIELDS.

Prototype

String FIELDS

To view the source code for org.apache.solr.common.params HighlightParams FIELDS.

Click Source Link

Usage

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);//from   www.ja va  2s .  c  o 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 w  w  .  j  av a 2  s.  c  o  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 highlightingSnippetsFragSizeTest() {

    logger.info("######### Testing SNIPPETS / FRAGSIZE ###########");
    SolrServletRequest req = areq(/*from  w  w  w .  j  a  v  a 2 s . c om*/
            params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT,
                    "true", HighlightParams.Q, "long", HighlightParams.FIELDS, "content,name,title",
                    HighlightParams.SNIPPETS, String.valueOf(4), HighlightParams.FRAGSIZE, String.valueOf(40)),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req, "*[count(//lst[@name='highlighting']/lst)=2]",
            "//lst[@name='highlighting']/lst[1]/arr[@name='name']/str[.='some very <em>long</em> name']",
            "//lst[@name='highlighting']/lst[1]/arr[@name='title']/str[.='title1 is very <em>long</em>']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.='this is some <em>long</em> text.  It has the']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.=' word <em>long</em> in many places.  In fact, it has']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.=' <em>long</em> on some different fragments.  Let us']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.=' see what happens to <em>long</em> in this case.']");
}

From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java

License:Open Source License

@Test
public void highlightingPhraseQueriesTest() {
    logger.info("######### Testing PHRASE QUERIES ###########");

    //Phrase hightling is on by default
    SolrServletRequest req = areq(//from  w w  w.j  a v  a 2  s .  co  m
            params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT,
                    "true", HighlightParams.Q, "\"some long\"", HighlightParams.FIELDS, "name",
                    HighlightParams.SIMPLE_PRE, "(", HighlightParams.SIMPLE_POST, ")", HighlightParams.SNIPPETS,
                    String.valueOf(1), HighlightParams.FRAGSIZE, String.valueOf(100)),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req,
            "//lst[@name='highlighting']/lst/arr/str[.='this is (some) (long) text.  It has the word long in many places.  In fact, it has long on some']");

    req = areq(
            params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT,
                    "true", HighlightParams.Q, "\"some long\"", HighlightParams.FIELDS, "name",
                    HighlightParams.USE_PHRASE_HIGHLIGHTER, "false", HighlightParams.SIMPLE_PRE, "(",
                    HighlightParams.SIMPLE_POST, ")", HighlightParams.SNIPPETS, String.valueOf(1),
                    HighlightParams.FRAGSIZE, String.valueOf(100)),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req, "//lst[@name='highlighting']/lst/arr/str[.='(some) very (long) name']",
            "//lst[@name='highlighting']/lst/arr/str[.='this is (some) (long) text.  It has the word (long) in many places.  In fact, it has (long) on (some)']");
}

From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java

License:Open Source License

@Test
public void highlightingMaxAnalyzedCharsTest() {
    logger.info("######### maxAnalyzedChars ###########");

    SolrServletRequest req = areq(params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5",
            HighlightParams.HIGHLIGHT, "true", HighlightParams.Q, "long", HighlightParams.FIELDS, "name,title",
            HighlightParams.MAX_CHARS, "18", HighlightParams.SIMPLE_PRE, "{", HighlightParams.SIMPLE_POST, "}"),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req, "*[count(//lst[@name='highlighting']/lst)=2]",
            "*[count(//lst[@name='highlighting']/lst/arr[@name='name'])=2]",
            "//lst[@name='highlighting']/lst[1]/arr[@name='name']/str[.='some very {long} name']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.='this is some {long}']");
}

From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java

License:Open Source License

@Test
public void highlightingMergeContinuousFragmentsTest() {
    logger.info("######### MergeContiguous ###########");

    SolrServletRequest req = areq(/*w  w w. ja  va 2s.  c  om*/
            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.']");
}

From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java

License:Open Source License

@Test
public void highlightingLocalConfigurationsTest() {
    logger.info("######### testLocal ###########");

    SolrServletRequest req = areq(//  w  ww  .j  a  va 2s  .  co  m
            params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT,
                    "true", HighlightParams.Q, "long", HighlightParams.FIELDS, "name,title",
                    "f.title." + HighlightParams.SIMPLE_PRE, "(", "f.title." + HighlightParams.SIMPLE_POST, ")",
                    "f.name." + HighlightParams.SIMPLE_PRE, "[", "f.name." + HighlightParams.SIMPLE_POST, "]",
                    HighlightParams.SIMPLE_PRE, "{", HighlightParams.SIMPLE_POST, "}"),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");
    assertQ(req, "*[count(//lst[@name='highlighting']/lst/arr[@name='name'])=2]",
            "*[count(//lst[@name='highlighting']/lst/str[@name='DBID'])=2]",
            "//lst[@name='highlighting']/lst[1]/arr[@name='name']/str[.='some very [long] name']",
            "//lst[@name='highlighting']/lst[1]/arr[@name='title']/str[.='title1 is very (long)']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.='this is some [long] text.  It has the word [long] in many places.  In fact, it has [long] on some']");
}

From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java

License:Open Source License

@Test
public void highlightingRequiredFieldsTest() {
    logger.info("######### requireFieldMatch ###########");

    SolrServletRequest req = areq(/*from w  w  w  . j av a2s .c o  m*/
            params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT,
                    "true", HighlightParams.Q, "long", HighlightParams.FIELDS, "name,title",
                    HighlightParams.SIMPLE_PRE, "{", HighlightParams.SIMPLE_POST, "}"),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req, "*[count(//lst[@name='highlighting']/lst)=2]",
            "*[count(//lst[@name='highlighting']/lst/arr[@name='title'])=1]",
            "//lst[@name='highlighting']/lst[1]/arr[@name='title']/str[.='title1 is very {long}']");
    //add name

    req = areq(params("q", "name:long OR title:long", "qt", "/afts", "start", "0", "rows", "5",
            HighlightParams.HIGHLIGHT, "true", HighlightParams.Q, "title:long", HighlightParams.FIELDS,
            "name,title", HighlightParams.FIELD_MATCH, "true", HighlightParams.SIMPLE_PRE, "{",
            HighlightParams.SIMPLE_POST, "}"), "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req, "*[count(//lst[@name='highlighting']/lst)=2]",
            "*[count(//lst[@name='highlighting']/lst/arr[@name='title'])=1]",
            "*[count(//lst[@name='highlighting']/lst/arr[@name='name'])=0]",
            "//lst[@name='highlighting']/lst[1]/arr[@name='title']/str[.='title1 is very {long}']");

    logger.info("######### MultiTerm ###########");
}

From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java

License:Open Source License

@Test
public void highlightingPrePostTest() {
    logger.info("######### Testing PRE / POST ###########");
    SolrServletRequest req = areq(/*from  www. j a va 2 s. com*/
            params("q", "name:long", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT,
                    "true", HighlightParams.Q, "long", HighlightParams.FIELDS, "content,name,title",
                    HighlightParams.SIMPLE_PRE, "<al>", HighlightParams.SIMPLE_POST, "<fresco>",
                    HighlightParams.SNIPPETS, String.valueOf(4), HighlightParams.FRAGSIZE, String.valueOf(40)),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req, "*[count(//lst[@name='highlighting']/lst)=2]",
            "//lst[@name='highlighting']/lst[1]/arr[@name='name']/str[.='some very <al>long<fresco> name']",
            "//lst[@name='highlighting']/lst[1]/arr[@name='title']/str[.='title1 is very <al>long<fresco>']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.='this is some <al>long<fresco> text.  It has the']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.=' word <al>long<fresco> in many places.  In fact, it has']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.=' <al>long<fresco> on some different fragments.  Let us']",
            "//lst[@name='highlighting']/lst[2]/arr[@name='name']/str[.=' see what happens to <al>long<fresco> in this case.']");
}

From source file:org.alfresco.solr.highlight.AlfrescoHighlighterTest.java

License:Open Source License

@Test
public void highlightingCamelCaseTest() {
    logger.info("######### CamelCase ###########");

    SolrServletRequest req = areq(//from   ww w  .j a  va  2s .c o m
            params("q", "name:cabbage", "qt", "/afts", "start", "0", "rows", "5", HighlightParams.HIGHLIGHT,
                    "true",
                    //HighlightParams.Q, "lon*",
                    HighlightParams.FIELDS, "name", HighlightParams.HIGHLIGHT_MULTI_TERM, "false",
                    HighlightParams.SIMPLE_PRE, "{", HighlightParams.SIMPLE_POST, "}", HighlightParams.SNIPPETS,
                    String.valueOf(1), HighlightParams.FRAGSIZE, String.valueOf(100)),
            "{\"locales\":[\"en\"], \"tenants\": [ \"\" ]}");

    assertQ(req, "*[count(//lst[@name='highlighting']/lst)=1]",
            "*[count(//lst[@name='highlighting']/lst/arr[@name='name'])=1]",
            "//lst[@name='highlighting']/lst[1]/arr[@name='name']/str[.='Mixed{Cabbage}String and plurals and discussion']");
}