Example usage for com.liferay.portal.kernel.search QueryConfig isHighlightEnabled

List of usage examples for com.liferay.portal.kernel.search QueryConfig isHighlightEnabled

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.search QueryConfig isHighlightEnabled.

Prototype

public boolean isHighlightEnabled() 

Source Link

Usage

From source file:com.liferay.users.admin.internal.search.UserIndexer.java

License:Open Source License

protected void addHighlightFieldNames(SearchContext searchContext) {
    QueryConfig queryConfig = searchContext.getQueryConfig();

    if (!queryConfig.isHighlightEnabled()) {
        return;// w  w  w  .j av a2  s .c  om
    }

    queryConfig.addHighlightFieldNames("fullName");
}

From source file:com.rknowsys.portal.search.elastic.ElasticsearchIndexSearcher.java

License:Open Source License

private void addHighlights(Query query, SearchRequestBuilder searchRequestBuilder) {
    QueryConfig queryConfig = query.getQueryConfig();
    if (queryConfig.isHighlightEnabled()) {

        String localizedContentName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.CONTENT);

        String localizedTitleName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.TITLE);

        int fragmentSize = queryConfig.getHighlightFragmentSize();
        int numberOfFragments = queryConfig.getHighlightSnippetSize();
        searchRequestBuilder.addHighlightedField(Field.CONTENT, fragmentSize, numberOfFragments);
        searchRequestBuilder.addHighlightedField(Field.TITLE, fragmentSize, numberOfFragments);
        searchRequestBuilder.addHighlightedField(localizedContentName, fragmentSize, numberOfFragments);
        searchRequestBuilder.addHighlightedField(localizedTitleName, fragmentSize, numberOfFragments);

    }/*w w w. j ava  2 s . com*/
}

From source file:com.rknowsys.portal.search.elastic.ElasticsearchIndexSearcher.java

License:Open Source License

protected Hits processSearchHits(SearchResponse searchResponse, QueryConfig queryConfig) {

    Hits hits = new HitsImpl();
    List<Document> documents = new ArrayList<Document>();
    Set<String> queryTerms = new HashSet<String>();
    List<Float> scores = new ArrayList<Float>();
    List<String> snippets = new ArrayList<String>();
    SearchHits searchHits = searchResponse.getHits();

    if (searchHits.totalHits() > 0) {
        SearchHit[] searchHitsArray = searchHits.getHits();

        for (SearchHit searchHit : searchHitsArray) {
            Document document = processSearchHit(searchHit);
            documents.add(document);//from  ww  w.  jav a 2s .c o  m
            scores.add(searchHit.getScore());

            String snippet = StringPool.BLANK;

            if (queryConfig.isHighlightEnabled()) {
                snippet = getSnippet(searchHit, queryConfig, queryTerms, searchHit.highlightFields(),
                        Field.CONTENT);

                if (Validator.isNull(snippet)) {
                    snippet = getSnippet(searchHit, queryConfig, queryTerms, searchHit.highlightFields(),
                            Field.TITLE);
                }

                if (Validator.isNotNull(snippet)) {
                    snippets.add(snippet);
                }
            }

        }
    }
    int totalHits = (int) searchHits.getTotalHits();
    _log.debug("Total Hits: " + totalHits);
    _log.debug("Total Documents size: " + documents.size());
    hits.setDocs(documents.toArray(new Document[documents.size()]));
    hits.setLength(totalHits);
    hits.setQueryTerms(queryTerms.toArray(new String[queryTerms.size()]));
    hits.setScores(scores.toArray(new Float[scores.size()]));
    hits.setSnippets(snippets.toArray(new String[snippets.size()]));

    return hits;
}

From source file:org.rsc.liferay.solr.SolrIndexSearcher.java

License:Open Source License

protected Hits subset(SolrQuery solrQuery, Query query, QueryConfig queryConfig, QueryResponse queryResponse,
        boolean allResults) throws Exception {

    long startTime = System.currentTimeMillis();

    Hits hits = new HitsImpl();

    SolrDocumentList solrDocumentList = queryResponse.getResults();

    long total = solrDocumentList.getNumFound();

    if (allResults && (total > 0)) {
        solrQuery.setRows((int) total);

        queryResponse = _solrServer.query(solrQuery);

        return subset(solrQuery, query, queryConfig, queryResponse, false);
    }/*w  ww . java  2s . c  om*/

    List<Document> documents = new ArrayList<Document>();
    List<Float> scores = new ArrayList<Float>();
    List<String> snippets = new ArrayList<String>();

    float maxScore = -1;
    Set<String> queryTerms = new HashSet<String>();
    int subsetTotal = 0;

    for (SolrDocument solrDocument : solrDocumentList) {
        Document document = new DocumentImpl();

        Collection<String> names = solrDocument.getFieldNames();

        for (String name : names) {
            Collection<Object> fieldValues = solrDocument.getFieldValues(name);

            Field field = new Field(name,
                    ArrayUtil.toStringArray(fieldValues.toArray(new Object[fieldValues.size()])));

            document.add(field);
        }

        documents.add(document);

        String snippet = StringPool.BLANK;

        if (queryConfig.isHighlightEnabled()) {
            snippet = getSnippet(solrDocument, queryConfig, queryTerms, queryResponse.getHighlighting(),
                    Field.CONTENT);

            if (Validator.isNull(snippet)) {
                snippet = getSnippet(solrDocument, queryConfig, queryTerms, queryResponse.getHighlighting(),
                        Field.TITLE);
            }

            if (Validator.isNotNull(snippet)) {
                snippets.add(snippet);
            }
        }

        if (queryConfig.isScoreEnabled()) {
            float score = GetterUtil.getFloat(String.valueOf(solrDocument.getFieldValue("score")));

            if (score > maxScore) {
                maxScore = score;
            }

            scores.add(score);
        } else {
            scores.add(maxScore);
        }

        subsetTotal++;
    }

    hits.setDocs(documents.toArray(new Document[subsetTotal]));
    hits.setLength((int) total);
    hits.setQuery(query);
    hits.setQueryTerms(queryTerms.toArray(new String[queryTerms.size()]));

    Float[] scoresArray = scores.toArray(new Float[subsetTotal]);

    if (queryConfig.isScoreEnabled() && (subsetTotal > 0) && (maxScore > 0)) {

        for (int i = 0; i < scoresArray.length; i++) {
            scoresArray[i] = scoresArray[i] / maxScore;
        }
    }

    hits.setScores(scoresArray);

    float searchTime = (float) (System.currentTimeMillis() - startTime) / Time.SECOND;

    hits.setSearchTime(searchTime);
    hits.setSnippets(snippets.toArray(new String[subsetTotal]));
    hits.setStart(startTime);

    return hits;
}

From source file:org.rsc.liferay.solr.SolrIndexSearcher.java

License:Open Source License

protected SolrQuery translateQuery(long companyId, Query query, Sort[] sorts, int start, int end)
        throws Exception {

    QueryConfig queryConfig = query.getQueryConfig();

    SolrQuery solrQuery = new SolrQuery();

    if (queryConfig.isHighlightEnabled()) {
        solrQuery.setHighlight(true);/*from  www. j  a v  a2  s. c  om*/
        solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize());
        solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize());

        String localizedContentName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.CONTENT);

        String localizedTitleName = DocumentImpl.getLocalizedName(queryConfig.getLocale(), Field.TITLE);

        solrQuery.setParam("hl.fl", Field.CONTENT, localizedContentName, Field.TITLE, localizedTitleName);
    }

    solrQuery.setIncludeScore(queryConfig.isScoreEnabled());

    QueryTranslatorUtil.translateForSolr(query);

    String queryString = query.toString();

    StringBundler sb = new StringBundler(6);

    sb.append(queryString);
    sb.append(StringPool.SPACE);
    sb.append(StringPool.PLUS);
    sb.append(Field.COMPANY_ID);
    sb.append(StringPool.COLON);
    sb.append(companyId);

    solrQuery.setQuery(sb.toString());

    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS)) {
        solrQuery.setRows(0);
    } else {
        solrQuery.setRows(end - start);
        solrQuery.setStart(start);
    }

    if (sorts != null) {
        for (Sort sort : sorts) {
            if (sort == null) {
                continue;
            }

            String sortFieldName = sort.getFieldName();

            if (DocumentImpl.isSortableTextField(sortFieldName)) {
                sortFieldName = DocumentImpl.getSortableFieldName(sortFieldName);
            }

            ORDER order = ORDER.asc;

            if (Validator.isNull(sortFieldName) || !sortFieldName.endsWith("sortable")) {

                sortFieldName = "score";

                order = ORDER.desc;
            }

            if (sort.isReverse()) {
                order = ORDER.desc;
            }

            solrQuery.addSort(new SortClause(sortFieldName, order));
        }
    }

    return solrQuery;
}