Ignore:
Timestamp:
02/25/14 14:34:29 (10 years ago)
Author:
twagoo
Message:

separated document query factory from facet query factory (both in interface and implementation)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrFacetQueryFactoryImpl.java

    r4565 r4566  
    1717package eu.clarin.cmdi.vlo.service.impl;
    1818
    19 import eu.clarin.cmdi.vlo.FacetConstants;
    2019import eu.clarin.cmdi.vlo.service.SolrFacetQueryFactory;
    2120import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    22 import java.util.ArrayList;
    23 import java.util.Collection;
    2421import java.util.List;
    25 import java.util.Map;
    2622import org.apache.solr.client.solrj.SolrQuery;
    27 import org.apache.solr.client.solrj.util.ClientUtils;
    2823
    2924/**
     
    3328 * @author twagoo
    3429 */
    35 public class SolrFacetQueryFactoryImpl implements SolrFacetQueryFactory {
     30public class SolrFacetQueryFactoryImpl extends AbstractSolrQueryFactory implements SolrFacetQueryFactory {
    3631   
    37     private static final String SOLR_SEARCH_ALL = "*:*";
    3832    private final SolrQuery facetCountQuery;
    3933    private final String[] facets;
     
    5852    }
    5953   
    60     @Override
    61     public SolrQuery createDocumentQuery(QueryFacetsSelection selection, int first, int count) {
    62         final SolrQuery query = getDefaultDocumentQuery();
    63         addQueryFacetParameters(query, selection);
    64         query.setStart(first);
    65         query.setRows(count);
    66         return query;
    67     }
    68    
    69     protected void addQueryFacetParameters(final SolrQuery query, QueryFacetsSelection queryFacetsSelections) {
    70         final String queryString = queryFacetsSelections.getQuery();
    71        
    72         if (queryString == null) {
    73             query.setQuery(SOLR_SEARCH_ALL);
    74         } else {
    75             query.setQuery(ClientUtils.escapeQueryChars(queryString));
    76         }
    77        
    78         final Map<String, Collection<String>> selections = queryFacetsSelections.getSelection();
    79         if (selections != null) {
    80             final List<String> encodedQueries = new ArrayList(selections.size()); // assuming every facet has one selection, most common scenario
    81             for (Map.Entry<String, Collection<String>> selection : selections.entrySet()) {
    82                 final String facetName = selection.getKey();
    83                 final Collection<String> values = selection.getValue();
    84                 if (values != null) {
    85                     for (String value : values) {
    86                         encodedQueries.add(String.format("%s:%s", facetName, ClientUtils.escapeQueryChars(value)));
    87                     }
    88                 }
    89             }
    90             query.setFilterQueries(encodedQueries.toArray(new String[encodedQueries.size()]));
    91         }
    92     }
    93    
    9454    private SolrQuery getDefaultFacetQuery() {
    9555        SolrQuery query = new SolrQuery();
     
    10161    }
    10262   
    103     private SolrQuery getDefaultDocumentQuery() {
    104         SolrQuery query = new SolrQuery();
    105         query.setFields(FacetConstants.FIELD_NAME, FacetConstants.FIELD_ID, FacetConstants.FIELD_DESCRIPTION, FacetConstants.FIELD_COLLECTION, FacetConstants.FIELD_RESOURCE);
    106         query.setSort(SolrQuery.SortClause.asc(FacetConstants.FIELD_NAME));
    107         return query;
    108     }
    109    
    11063    @Override
    11164    public synchronized SolrQuery createCountFacetsQuery() {
Note: See TracChangeset for help on using the changeset viewer.