Code Search for Developers
 
 
  

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

Kneobase

Kneobase is an enterprise search engine, based upon the Lucene search engine and the Spring framework. It allows to perform full-text search across many different content sources. It is highly adaptable out-of-the-box and has a pluggable architecture.

Project homepage: http://sourceforge.net/projects/kneobase
Programming language(s): Java,XML
License: other

  DocBean.java
  SearchCommand.java
  SearchController.java