SearchController.java from Kneobase at Krugle
Show SearchController.java syntax highlighted
/*
* Created on 24/06/2004
*
*/
package com.kneobase.web.search;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import com.kneobase.driver.documentbuilder.MimeTypeBuilder;
import com.kneobase.logging.LogSearchSessionDecorator;
import com.kneobase.search.I_SearchSession;
import com.kneobase.search.query.Filter;
import com.kneobase.search.query.FullTextQuery;
import com.kneobase.search.query.HighlighterConfiguration;
import com.kneobase.search.query.Hits;
import com.kneobase.search.query.Query;
import com.kneobase.search.query.QueryFilter;
import com.kneobase.search.query.Term;
import com.kneobase.search.query.TermQuery;
import com.kneobase.server.index.IndexManager;
/**
* @author Ernesto De Santis
*
*/
public class SearchController extends AbstractCommandController {
private IndexManager indexManager;
private HighlighterConfiguration highlighterConfiguration;
protected ModelAndView handle(
HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors)
throws Exception {
SearchCommand searchCommand = (SearchCommand) command;
searchCommand.setFields(indexManager.getFieldNames(true));
searchCommand.setSources(indexManager.getSources(true));
searchCommand.setLanguages(indexManager.getLanguages());
searchCommand.setMimetypes(indexManager.getContentConfiguration().getMimeTypes());
searchCommand.setHighlighterConfiguration(getHighlighterConfiguration());
String input = searchCommand.getUserInput();
if (input != null && !input.equals("")) {
try {
I_SearchSession searchSess = new LogSearchSessionDecorator(indexManager.getSearchSession());
String field = searchCommand.getField();
String fuente = searchCommand.getSource();
String language = searchCommand.getLanguage();
String mimetype = searchCommand.getMimetype();
// usar StringQuery para levantar el query del usuario
// usar LanguageFilter para levantar el lenguaje seleccionado por el usuario
// usar SourceFilter para los sources
Hits hits = null;
Query query = new FullTextQuery(field, input);
List languageFilters = new ArrayList();
String[] sourceFilters = null;
if (!fuente.equals("_all_")) {
sourceFilters = new String[] { fuente };
} else {
sourceFilters = new String[0];
}
if ("_all_".equals(language)) {
Iterator it = searchCommand.getLanguages().iterator();
while (it.hasNext()) {
languageFilters.add((String) it.next());
}
} else if (!"_autodetect_".equals(language)) {
languageFilters.add(language);
}
Filter mimetypeFilter = null;
if (mimetype != null && !mimetype.equals("")) {
Query mimetypeQuery =
new TermQuery(new Term(MimeTypeBuilder.DEFAULT_FIELD_NAME, mimetype));
mimetypeFilter = new QueryFilter(mimetypeQuery);
}
if (languageFilters.size() > 0) {
hits =
searchSess.search(
query,
mimetypeFilter,
sourceFilters,
(String[]) languageFilters.toArray(new String[0]));
} else {
hits = searchSess.search(query, mimetypeFilter, sourceFilters);
}
searchCommand.setHits(hits);
searchCommand.setQuery(query.toString());
} catch (Exception e) {
searchCommand.setError(e);
}
}
Map model = errors.getModel();
return new ModelAndView("search", model);
}
/**
* @return
*/
public IndexManager getIndexManager() {
return indexManager;
}
/**
* @param manager
*/
public void setIndexManager(IndexManager manager) {
indexManager = manager;
}
/**
* @return
*/
public HighlighterConfiguration getHighlighterConfiguration() {
return highlighterConfiguration;
}
/**
* @param configuration
*/
public void setHighlighterConfiguration(HighlighterConfiguration configuration) {
highlighterConfiguration = configuration;
}
}
See more files for this project here