package org.nextprot.api.solr; public class AutocompleteConfiguration extends IndexConfiguration { private final char STAR = '*'; private final String RANDOM_STRING = "dfjhgdfjh"; public AutocompleteConfiguration(String name) { super(name); } public AutocompleteConfiguration(String name, IndexConfiguration parentConfiguration) { super(name, parentConfiguration); } /** * It is different from the simple build query since * it adds a star to the end of the last incomplete token * if that's the case * * ex. kin*, kinase * * @param query * @return */ @Override public String buildQuery(Query query) { String initialQuery = query.getQueryString(true); String queryString = super.buildQuery(query); // finishes with space if(initialQuery.charAt(initialQuery.length()-1) == WHITESPACE.charAt(0)) { this.otherParameters.put("facet.prefix", RANDOM_STRING); } else { String[] tokens = query.getQueryString(true).split(WHITESPACE); String lastToken = tokens[tokens.length-1].toLowerCase(); char lastCharOfLastToken = lastToken.charAt(lastToken.length()-1); String prefix = ""; if(lastCharOfLastToken != STAR) { queryString += STAR; prefix = lastToken; } else { prefix = lastToken.substring(0, lastToken.length()-1); } this.otherParameters.put("facet.prefix", prefix); } return queryString; } }