source: vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/solr/impl/AutoCompleteServiceImpl.java @ 4850

Last change on this file since 4850 was 4850, checked in by Twan Goosen, 10 years ago

autocomplete service returns an iterator. Simplified and cleaned up implementation

  • Property svn:mime-type set to text/plain
File size: 1.7 KB
Line 
1package eu.clarin.cmdi.vlo.service.solr.impl;
2
3import com.google.common.collect.Iterators;
4import eu.clarin.cmdi.vlo.service.solr.AutoCompleteService;
5import eu.clarin.cmdi.vlo.config.VloConfig;
6import java.util.Iterator;
7import java.util.List;
8
9import org.apache.solr.client.solrj.SolrQuery;
10import org.apache.solr.client.solrj.SolrServer;
11import org.apache.solr.client.solrj.response.QueryResponse;
12import org.apache.solr.client.solrj.response.SpellCheckResponse.Suggestion;
13
14/**
15 * DAO that delivers suggestions for incomplete terms (autocomplete function)
16 *
17 * @author Thomas Eckart
18 * @author Twan Goosen
19 *
20 */
21public class AutoCompleteServiceImpl extends SolrDaoImpl implements AutoCompleteService {
22
23    public AutoCompleteServiceImpl(SolrServer solrServer, VloConfig config) {
24        super(solrServer, config);
25    }
26   
27    /**
28     * Returns list of suggestions for incomplete input (used for autocomplete
29     * function)
30     *
31     * @param input user input
32     * @return iterator over suggestions
33     */
34    @Override
35    public Iterator<String> getChoices(String input) {
36        if (input != null) {
37           
38            final SolrQuery query = new SolrQuery();
39            query.setQuery(input.toLowerCase());
40            query.setRequestHandler("/suggest");
41           
42            final QueryResponse response = fireQuery(sanitise(query));
43           
44            if (response.getSpellCheckResponse() != null) {
45                final List<Suggestion> suggestions = response.getSpellCheckResponse().getSuggestions();
46                if (suggestions.size() > 0) {
47                    return suggestions.get(0).getAlternatives().iterator();
48                }
49            }
50        }
51
52        return Iterators.emptyIterator();
53    }
54}
Note: See TracBrowser for help on using the repository browser.