List of usage examples for com.liferay.portal.kernel.search QueryConfig isHighlightEnabled
public boolean isHighlightEnabled()
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; }