public SearchBean() {
    HttpServletRequest hsr =
        (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
    javax.servlet.http.HttpServletResponse response =
        (javax.servlet.http.HttpServletResponse)
            FacesContext.getCurrentInstance().getExternalContext().getResponse();
    String term = hsr.getParameter("q").trim();

    if (term.length() < 1) {
      try {
        response.sendRedirect("/");
      } catch (Exception ex) {
      }
    }

    BiblePassage passage = BiblePassage.parse(term, CachedData.getBibleBooks(), true);
    if (passage != null) {
      try {
        response.sendRedirect("/bible/" + passage.getUrl());
      } catch (Exception ex) {
      }
    } else {

      if (!term.contains(" ")) {
        String baseWord = Topic.getBaseWord(term);
        Topic topic = Topic.loadByBaseWord(baseWord);
        if (topic != null) {
          try {
            response.sendRedirect("/topics/" + topic.getUrl());
          } catch (Exception ex) {
          }
        }
      } else {
        int verseId = TextSearch.findMatch(term);
        passage = BiblePassage.load(verseId, verseId);
        passage.populateVerses(AppUser.getCurrent().TranslationId);
        try {
          response.sendRedirect("/bible/" + passage.getUrl());
        } catch (Exception ex) {
        }
      }
    }
  }