comparison src/main/java/edu/harvard/iq/dataverse/AutoCompleteBean.java @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
comparison
equal deleted inserted replaced
9:5926d6419569 10:a50cf11e5178
1 package edu.harvard.iq.dataverse;
2
3 import edu.harvard.iq.dataverse.util.SystemConfig;
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.logging.Logger;
7 import javax.ejb.EJB;
8 import javax.inject.Named;
9 import org.apache.solr.client.solrj.SolrQuery;
10 import org.apache.solr.client.solrj.SolrServer;
11 import org.apache.solr.client.solrj.SolrServerException;
12 import org.apache.solr.client.solrj.impl.HttpSolrServer;
13 import org.apache.solr.client.solrj.response.QueryResponse;
14 import org.apache.solr.client.solrj.response.TermsResponse;
15 import org.apache.solr.client.solrj.response.TermsResponse.Term;
16
17 /**
18 * @todo: move to service bean
19 */
20 @Named
21 public class AutoCompleteBean implements java.io.Serializable {
22
23 private static final Logger logger = Logger.getLogger(AutoCompleteBean.class.getCanonicalName());
24
25 @EJB
26 SystemConfig systemConfig;
27
28 public List<String> complete(String query) {
29 List<String> results = new ArrayList<>();
30
31 SolrServer solrServer = new HttpSolrServer("http://" + systemConfig.getSolrHostColonPort() + "/solr");
32 SolrQuery solrQuery = new SolrQuery();
33 solrQuery.setParam("qt", "/terms");
34 solrQuery.setTermsLower(query);
35 solrQuery.setTermsPrefix(query);
36 // dataverses and files use SearchFields.NAME
37 // solrQuery.addTermsField(SearchFields.NAME);
38 solrQuery.addTermsField("text");
39 // long datasetFieldDescription = 33L;
40 // String solrFieldDatasetFieldDescription = datasetFieldService.find(datasetFieldDescription).getSolrField();
41 // solrQuery.addTermsField(solrFieldDatasetFieldDescription);
42 List<Term> items = null;
43
44 try {
45 logger.info("Solr query: " + solrQuery);
46 QueryResponse qr = solrServer.query(solrQuery);
47 TermsResponse resp = qr.getTermsResponse();
48 // items = resp.getTerms(SearchFields.NAME);
49 items = resp.getTerms("text");
50 // items = resp.getTerms(solrFieldDatasetFieldDescription);
51 } catch (SolrServerException e) {
52 items = null;
53 }
54
55 if (items != null) {
56 for (Term term : items) {
57 logger.info("term: " + term.getTerm());
58 results.add(term.getTerm());
59 }
60 } else {
61 logger.info("no terms found");
62 }
63
64 return results;
65 }
66
67 }