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;
+    }
+
+}