Example usage for org.apache.solr.client.solrj SolrQuery setRows

List of usage examples for org.apache.solr.client.solrj SolrQuery setRows

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setRows.

Prototype

public SolrQuery setRows(Integer rows) 

Source Link

Usage

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;
}