2 * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
4 * This library is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License as published by the Free
6 * Software Foundation; either version 2.1 of the License, or (at your option)
9 * This library is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15 package com.liferay.portal.search.solr.facet;
17 import com.liferay.portal.kernel.search.facet.collector.FacetCollector;
18 import com.liferay.portal.kernel.search.facet.collector.TermCollector;
20 import java.util.ArrayList;
21 import java.util.HashMap;
22 import java.util.List;
26 * @author Raymond Augé
28 public class SolrFacetQueryCollector implements FacetCollector {
30 public SolrFacetQueryCollector(
31 String fieldName, Map<String, Integer> facetQueries) {
33 _fieldName = fieldName;
35 for (Map.Entry<String, Integer> entry : facetQueries.entrySet()) {
36 String term = _getTerm(entry.getKey());
37 Integer count = entry.getValue();
39 _counts.put(term, count);
43 public String getFieldName() {
47 public TermCollector getTermCollector(String term) {
48 Integer count = _counts.get(term);
50 return new SolrTermCollector(term, count.intValue());
53 public List<TermCollector> getTermCollectors() {
54 if (_termCollectors != null) {
55 return _termCollectors;
58 List<TermCollector> termCollectors = new ArrayList<TermCollector>();
60 for (Map.Entry<String, Integer> entry : _counts.entrySet()) {
61 Integer count = entry.getValue();
63 TermCollector termCollector = new SolrTermCollector(
64 entry.getKey(), count.intValue());
66 termCollectors.add(termCollector);
69 _termCollectors = termCollectors;
71 return _termCollectors;
74 private String _getTerm(String term) {
75 return term.substring(_fieldName.length() + 1);
78 private Map<String, Integer> _counts = new HashMap<String, Integer>();
79 private String _fieldName;
80 private List<TermCollector> _termCollectors;