diff --git a/solr/exampleSolr/conf/schema.xml b/solr/exampleSolr/conf/schema.xml
index ab0bb82f5..7a220a86b 100644
--- a/solr/exampleSolr/conf/schema.xml
+++ b/solr/exampleSolr/conf/schema.xml
@@ -480,7 +480,7 @@
-
+
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java
index 492ee4fd4..c6ae4d3cb 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java
@@ -689,7 +689,7 @@ public class PagedSearchController extends FreemarkerHttpServlet implements Sear
VitroLuceneTermNames.MONIKER,
VitroLuceneTermNames.ALLTEXT,
VitroLuceneTermNames.ALLTEXTUNSTEMMED,
- VitroLuceneTermNames.NAME_RAW,
+ VitroLuceneTermNames.NAME_LOWERCASE,
VitroLuceneTermNames.CLASSLOCALNAME,
VitroLuceneTermNames.CLASSLOCALNAMELOWERCASE }, analyzer);
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SolrAutocompleteController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SolrAutocompleteController.java
index bed61a8f9..4a06424c7 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SolrAutocompleteController.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SolrAutocompleteController.java
@@ -12,7 +12,6 @@ import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -22,10 +21,9 @@ import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
-import org.apache.solr.core.SolrConfig;
+import org.apache.solr.common.params.FacetParams;
import org.json.JSONArray;
import org.json.JSONObject;
-import org.xml.sax.SAXException;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseBasicAjaxControllers;
@@ -104,7 +102,9 @@ public class SolrAutocompleteController extends VitroAjaxController {
for (SolrDocument doc : docs) {
try{
String uri = doc.get(VitroLuceneTermNames.URI).toString();
- String name = doc.get(VitroLuceneTermNames.NAME_RAW).toString();
+ // VitroLuceneTermNames.NAME_RAW is a multivalued field, so doc.get() returns a list
+ @SuppressWarnings("unchecked")
+ String name = ((List) doc.get(VitroLuceneTermNames.NAME_RAW)).get(0);
SearchResult result = new SearchResult(name, uri);
results.add(result);
} catch(Exception e){
@@ -215,22 +215,16 @@ public class SolrAutocompleteController extends VitroAjaxController {
private SolrQuery setUntokenizedNameQuery(SolrQuery query, String querystr) {
- //querystr = querystr.toLowerCase();
- querystr += "*";
- //query = query.setQuery(VitroLuceneTermNames.NAME_LOWERCASE + ":" + querystr);
- //query.addFilterQuery(VitroLuceneTermNames.NAME_LOWERCASE);
- //query.setQuery(querystr);
-
- try {
- SolrConfig config = new SolrConfig();
+ // Using facet method described in http://solr.pl/en/2010/10/18/solr-and-autocomplete-part-1/
+ // Consider using Solr Suggester in a future version.
+ return query.setFacet(true)
+ .addFacetField(VitroLuceneTermNames.NAME_LOWERCASE)
+ .setFacetMinCount(1)
+ .setFacetLimit(MAX_QUERY_LENGTH)
+ .setFacetPrefix(querystr)//.toLowerCase())
+ //.setFacetSort(FacetParams.FACET_SORT_INDEX) // sort by alpha (but doesn't work)
+ .setQuery("*:*");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- log.error(e, e);
- return null;
- }
-
- return query;
}
private void doNoQuery(HttpServletResponse response) throws IOException {