Mercurial > hg > LGDataverses
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/edu/harvard/iq/dataverse/AutoCompleteBean.java Tue Sep 08 17:00:21 2015 +0200 @@ -0,0 +1,67 @@ +package edu.harvard.iq.dataverse; + +import edu.harvard.iq.dataverse.util.SystemConfig; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; +import javax.ejb.EJB; +import javax.inject.Named; +import org.apache.solr.client.solrj.SolrQuery; +import org.apache.solr.client.solrj.SolrServer; +import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.impl.HttpSolrServer; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.client.solrj.response.TermsResponse; +import org.apache.solr.client.solrj.response.TermsResponse.Term; + +/** + * @todo: move to service bean + */ +@Named +public class AutoCompleteBean implements java.io.Serializable { + + private static final Logger logger = Logger.getLogger(AutoCompleteBean.class.getCanonicalName()); + + @EJB + SystemConfig systemConfig; + + public List<String> complete(String query) { + List<String> results = new ArrayList<>(); + + SolrServer solrServer = new HttpSolrServer("http://" + systemConfig.getSolrHostColonPort() + "/solr"); + SolrQuery solrQuery = new SolrQuery(); + solrQuery.setParam("qt", "/terms"); + solrQuery.setTermsLower(query); + solrQuery.setTermsPrefix(query); + // dataverses and files use SearchFields.NAME +// solrQuery.addTermsField(SearchFields.NAME); + solrQuery.addTermsField("text"); +// long datasetFieldDescription = 33L; +// String solrFieldDatasetFieldDescription = datasetFieldService.find(datasetFieldDescription).getSolrField(); +// solrQuery.addTermsField(solrFieldDatasetFieldDescription); + List<Term> items = null; + + try { + logger.info("Solr query: " + solrQuery); + QueryResponse qr = solrServer.query(solrQuery); + TermsResponse resp = qr.getTermsResponse(); +// items = resp.getTerms(SearchFields.NAME); + items = resp.getTerms("text"); +// items = resp.getTerms(solrFieldDatasetFieldDescription); + } catch (SolrServerException e) { + items = null; + } + + if (items != null) { + for (Term term : items) { + logger.info("term: " + term.getTerm()); + results.add(term.getTerm()); + } + } else { + logger.info("no terms found"); + } + + return results; + } + +}
