List of usage examples for org.apache.solr.client.solrj SolrQuery setRows
public SolrQuery setRows(Integer rows)
From source file:com.liferay.portal.search.solr.internal.SolrQuerySuggester.java
License:Open Source License
protected TreeSet<WeightedWord> suggestKeywords(SearchContext searchContext, String input) throws SearchException { try {/* w w w . j a v a 2 s .com*/ Map<String, WeightedWord> weightedWordsMap = new HashMap<>(); TreeSet<WeightedWord> weightedWordsSet = new TreeSet<>(); SolrQuery solrQuery = _nGramQueryBuilder.getNGramQuery(input); solrQuery.addFilterQuery(getFilterQueries(searchContext, SuggestionConstants.TYPE_SPELL_CHECKER)); solrQuery.setRows(_MAX_QUERY_RESULTS); QueryResponse queryResponse = _solrServer.query(solrQuery, SolrRequest.METHOD.POST); SolrDocumentList solrDocumentList = queryResponse.getResults(); for (int i = 0; i < solrDocumentList.size(); i++) { SolrDocument solrDocument = solrDocumentList.get(i); List<String> suggestions = (List<String>) solrDocument.get(Field.SPELL_CHECK_WORD); String suggestion = suggestions.get(0); List<String> weights = (List<String>) solrDocument.get(Field.PRIORITY); float weight = GetterUtil.getFloat(weights.get(0)); if (suggestion.equals(input)) { weight = _INFINITE_WEIGHT; } else { String inputLowerCase = StringUtil.toLowerCase(input); String suggestionLowerCase = StringUtil.toLowerCase(suggestion); float distance = _stringDistance.getDistance(inputLowerCase, suggestionLowerCase); if (distance >= _distanceThreshold) { weight = weight + distance; } } WeightedWord weightedWord = weightedWordsMap.get(suggestion); if (weightedWord == null) { weightedWord = new WeightedWord(suggestion, weight); weightedWordsMap.put(suggestion, weightedWord); weightedWordsSet.add(weightedWord); } else if (weight > weightedWord.getWeight()) { weightedWord.setWeight(weight); } } return weightedWordsSet; } catch (Exception e) { if (_log.isDebugEnabled()) { _log.debug("Unable to execute Solr query", e); } throw new SearchException(e.getMessage(), e); } }
From source file:com.liferay.portal.search.solr.SolrIndexSearcher.java
License:Open Source License
protected QueryResponse search(SearchContext searchContext, Query query, int start, int end, boolean count) throws Exception { SolrQuery solrQuery = new SolrQuery(); if (count) {/*from w w w . j a va 2 s.c om*/ solrQuery.setRows(0); } else { QueryConfig queryConfig = query.getQueryConfig(); addFacets(solrQuery, searchContext); addHighlights(solrQuery, queryConfig); addPagination(solrQuery, start, end); addSelectedFields(solrQuery, queryConfig); addSort(solrQuery, searchContext.getSorts()); solrQuery.setIncludeScore(queryConfig.isScoreEnabled()); } translateQuery(solrQuery, searchContext, query); return _solrServer.query(solrQuery, METHOD.POST); }
From source file:com.liferay.portal.search.solr.SolrIndexSearcherImpl.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); }/*from w w w.ja va 2 s. c om*/ float maxScore = 1; if (queryConfig.isScoreEnabled()) { maxScore = solrDocumentList.getMaxScore(); } int subsetTotal = solrDocumentList.size(); Document[] documents = new DocumentImpl[subsetTotal]; String[] snippets = new String[subsetTotal]; float[] scores = new float[subsetTotal]; int j = 0; Set<String> queryTerms = new HashSet<String>(); Map<String, Map<String, List<String>>> highlights = queryResponse.getHighlighting(); 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); } float score = 1; if (queryConfig.isScoreEnabled()) { score = GetterUtil.getFloat(String.valueOf(solrDocument.getFieldValue("score"))); } documents[j] = document; if (queryConfig.isHighlightEnabled()) { snippets[j] = getSnippet(solrDocument, queryTerms, highlights); } else { snippets[j] = StringPool.BLANK; } scores[j] = score / maxScore; j++; } float searchTime = (float) (System.currentTimeMillis() - startTime) / Time.SECOND; hits.setDocs(documents); hits.setLength((int) total); hits.setQuery(query); hits.setQueryTerms(queryTerms.toArray(new String[queryTerms.size()])); hits.setScores(scores); hits.setSearchTime(searchTime); hits.setSnippets(snippets); hits.setStart(startTime); return hits; }
From source file:com.liferay.portal.search.solr.SolrIndexSearcherImpl.java
License:Open Source License
protected SolrQuery translateQuery(long companyId, Query query, Sort[] sorts, int start, int end) throws Exception { QueryTranslatorUtil.translateForSolr(query); String queryString = query.toString(); QueryConfig queryConfig = query.getQueryConfig(); SolrQuery solrQuery = new SolrQuery(); solrQuery.setHighlight(queryConfig.isHighlightEnabled()); solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize()); solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize()); solrQuery.setIncludeScore(queryConfig.isScoreEnabled()); solrQuery.setQuery(queryString);/*from ww w.ja va 2s . co m*/ if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS)) { solrQuery.setRows(0); } else { solrQuery.setRows(end - start); solrQuery.setStart(start); } if ((sorts != null) && (sorts.length > 0)) { for (Sort sort : sorts) { if (sort == null) { continue; } String sortFieldName = sort.getFieldName(); if (ArrayUtil.contains(PortletPropsValues.SOLR_SORTABLE_TEXT_FIELDS, sortFieldName)) { sortFieldName = GetterUtil.getString( PortletProps.get(PortletPropsKeys.SOLR_COPY_FIELDS, new Filter(sortFieldName))); } ORDER order = ORDER.asc; if (sortFieldName == null) { sortFieldName = "score"; order = ORDER.desc; } else if (sort.isReverse()) { order = ORDER.desc; } solrQuery.addSortField(sortFieldName, order); } } return solrQuery; }
From source file:com.liferay.portal.search.solr.SolrQuerySuggester.java
License:Open Source License
protected TreeSet<WeightedWord> suggestKeywords(SearchContext searchContext, String input) throws SearchException { try {//from www. j a va 2 s.com Map<String, WeightedWord> weightedWordsMap = new HashMap<String, WeightedWord>(); TreeSet<WeightedWord> weightedWordsSet = new TreeSet<WeightedWord>(); SolrQuery solrQuery = _nGramQueryBuilder.getNGramQuery(input); solrQuery.addFilterQuery(getFilterQueries(searchContext, SuggestionConstants.TYPE_SPELL_CHECKER)); solrQuery.setRows(_MAX_QUERY_RESULTS); QueryResponse queryResponse = _solrServer.query(solrQuery, SolrRequest.METHOD.POST); SolrDocumentList solrDocumentList = queryResponse.getResults(); for (int i = 0; i < solrDocumentList.size(); i++) { SolrDocument solrDocument = solrDocumentList.get(i); List<String> suggestions = (List<String>) solrDocument.get(Field.SPELL_CHECK_WORD); String suggestion = suggestions.get(0); List<String> weights = (List<String>) solrDocument.get(Field.PRIORITY); float weight = GetterUtil.getFloat(weights.get(0)); if (suggestion.equals(input)) { weight = _INFINITE_WEIGHT; } else { String inputLowerCase = StringUtil.toLowerCase(input); String suggestionLowerCase = StringUtil.toLowerCase(suggestion); float distance = StringDistanceCalculatorUtil.getDistance(inputLowerCase, suggestionLowerCase); if (distance >= _distanceThreshold) { weight = weight + distance; } } WeightedWord weightedWord = weightedWordsMap.get(suggestion); if (weightedWord == null) { weightedWord = new WeightedWord(suggestion, weight); weightedWordsMap.put(suggestion, weightedWord); weightedWordsSet.add(weightedWord); } else if (weight > weightedWord.getWeight()) { weightedWord.setWeight(weight); } } return weightedWordsSet; } catch (Exception e) { if (_log.isDebugEnabled()) { _log.debug("Unable to execute Solr query", e); } throw new SearchException(e.getMessage(), e); } }
From source file:com.lucidworks.fusion.support.tests.DocumentLevelACP.java
public ArrayList<SolrDocument> run() { ArrayList<SolrDocument> list = new SolrDocumentList(); try {/*www.j a va2 s. co m*/ SolrClient client = getSolrClient(); SolrQuery query = new SolrQuery(); query.setQuery("*"); query.setRows(10); QueryResponse resp = client.query(DEFAULT_COLLECTION, query); SolrDocumentList results = resp.getResults(); SolrDocument doc; for (int i = 0; i < results.size(); ++i) { System.out.println(results.get(i)); doc = results.get(i); if (hasACP(doc)) { list.add(doc); } } } catch (Exception e) { e.printStackTrace(); } return list; }
From source file:com.lyncode.oai.proxy.data.ProxyItemRepository.java
License:Apache License
@Override public ListItemIdentifiersResult getItemIdentifiers(List<Filter> filters, int offset, int length) { try {/* w w w . ja v a 2s . c o m*/ List<String> whereCond = new ArrayList<String>(); for (Filter filter : filters) { if (filter.getFilter() instanceof ProxyFilter) { ProxyFilter proxyFilter = (ProxyFilter) filter.getFilter(); whereCond.add("(" + proxyFilter.query() + ")"); } } if (whereCond.isEmpty()) whereCond.add("*:*"); SolrQuery query = new SolrQuery("(" + StringUtils.join(whereCond.iterator(), ") AND (") + ")"); query.setStart(offset); query.setRows(length); SolrDocumentList list = SolrServerManager.getServer().query(query).getResults(); List<AbstractItemIdentifier> results = new ArrayList<AbstractItemIdentifier>(); for (SolrDocument doc : list) results.add(new ProxyItem(doc)); return new ListItemIdentifiersResult(list.getNumFound() > offset + length, results, (int) list.getNumFound()); } catch (SolrServerException e) { return new ListItemIdentifiersResult(false, new ArrayList<AbstractItemIdentifier>()); } }
From source file:com.lyncode.oai.proxy.data.ProxyItemRepository.java
License:Apache License
@Override public ListItemsResults getItems(List<Filter> filters, int offset, int length) { try {//from w w w. j a v a 2 s .c o m List<String> whereCond = new ArrayList<String>(); for (Filter filter : filters) { if (filter.getFilter() instanceof ProxyFilter) { ProxyFilter proxyFilter = (ProxyFilter) filter.getFilter(); whereCond.add("(" + proxyFilter.query() + ")"); } } if (whereCond.isEmpty()) whereCond.add("*:*"); SolrQuery query = new SolrQuery("(" + StringUtils.join(whereCond.iterator(), ") AND (") + ")"); query.setStart(offset); query.setRows(length); SolrDocumentList list = SolrServerManager.getServer().query(query).getResults(); List<AbstractItem> results = new ArrayList<AbstractItem>(); for (SolrDocument doc : list) results.add(new ProxyItem(doc)); return new ListItemsResults(list.getNumFound() > offset + length, results, (int) list.getNumFound()); } catch (SolrServerException e) { return new ListItemsResults(false, new ArrayList<AbstractItem>()); } }
From source file:com.mmj.app.lucene.solr.utils.BaseSolrQueryConvert.java
License:Open Source License
public static SolrQuery createSuggestQuery(SuggestQuery query) { SolrQuery solrQuery = new SolrQuery(); StringBuilder sb = new StringBuilder(); sb.append("suggest:").append(query.getPrefix()).append("*"); solrQuery.setQuery(sb.toString());//from w w w. j a va 2 s . co m solrQuery.addField(query.getField()); if (StringUtils.isNotEmpty(query.getSortFiled())) { solrQuery.addSort(query.getSortFiled(), SolrQuery.ORDER.desc); } solrQuery.setStart(0); solrQuery.setRows(100); return solrQuery; }
From source file:com.mmj.app.lucene.solr.utils.BaseSolrQueryConvert.java
License:Open Source License
protected static SolrQuery createSearchQuery(List<String> params, List<String> fiters, SearchQuery searchQuery, String... searchHandler) { SolrQuery solrQuery = new SolrQuery(); String query = null;/*from www .j a v a 2s .c o m*/ if (Argument.isEmpty(params)) { query = ("*:*"); } else { query = StringUtils.join(params, " AND "); if (!StringUtils.join(params.toArray()).contains("*")) { if (Argument.isNotEmptyArray(searchHandler)) { solrQuery.setRequestHandler( StringUtils.isEmpty(searchHandler[0]) ? "/select" : searchHandler[0]); } } } if (Argument.isNotEmpty(fiters)) { solrQuery.setFilterQueries(StringUtils.join(fiters, " AND ")); } solrQuery.setQuery(query); solrQuery.setStart(searchQuery.getStart()); solrQuery.setRows(searchQuery.getRows()); if (StringUtils.isNotBlank(searchQuery.getSortFiled())) { solrQuery.addSort(searchQuery.getSortFiled(), searchQuery.getOrderBy()); } return solrQuery; }