Changeset 4566 for vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrFacetQueryFactoryImpl.java
- Timestamp:
- 02/25/14 14:34:29 (10 years ago)
- 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 17 17 package eu.clarin.cmdi.vlo.service.impl; 18 18 19 import eu.clarin.cmdi.vlo.FacetConstants;20 19 import eu.clarin.cmdi.vlo.service.SolrFacetQueryFactory; 21 20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 22 import java.util.ArrayList;23 import java.util.Collection;24 21 import java.util.List; 25 import java.util.Map;26 22 import org.apache.solr.client.solrj.SolrQuery; 27 import org.apache.solr.client.solrj.util.ClientUtils;28 23 29 24 /** … … 33 28 * @author twagoo 34 29 */ 35 public class SolrFacetQueryFactoryImpl implements SolrFacetQueryFactory {30 public class SolrFacetQueryFactoryImpl extends AbstractSolrQueryFactory implements SolrFacetQueryFactory { 36 31 37 private static final String SOLR_SEARCH_ALL = "*:*";38 32 private final SolrQuery facetCountQuery; 39 33 private final String[] facets; … … 58 52 } 59 53 60 @Override61 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 scenario81 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 94 54 private SolrQuery getDefaultFacetQuery() { 95 55 SolrQuery query = new SolrQuery(); … … 101 61 } 102 62 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 110 63 @Override 111 64 public synchronized SolrQuery createCountFacetsQuery() {
Note: See TracChangeset
for help on using the changeset viewer.