search.jsp revision 1186
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen<%--
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen$Id$
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo SirainenCDDL HEADER START
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo SirainenThe contents of this file are subject to the terms of the
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo SirainenCommon Development and Distribution License (the "License").
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo SirainenYou may not use this file except in compliance with the License.
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo SirainenSee LICENSE.txt included in this distribution for the specific
6c2ce1d5bf17b21e804a079eb0f973b7ab83e0d8Timo Sirainenlanguage governing permissions and limitations under the License.
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo SirainenWhen distributing Covered Code, include this CDDL HEADER in each
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainenfile and include the License file at LICENSE.txt.
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo SirainenIf applicable, add the following below this CDDL HEADER, with the
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainenfields enclosed by brackets "[]" replaced with your own identifying
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Siraineninformation: Portions Copyright [yyyy] [name of copyright owner]
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo SirainenCDDL HEADER END
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen
b2ed2b25c4c457ec1c99ebe5e9bd66a2e2f89cfdTimo SirainenCopyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo SirainenPortions Copyright 2011 Jens Elkner.
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen--%><%@page session="false" errorPage="error.jsp" import="
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainenorg.opensolaris.opengrok.search.Results,
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainenorg.opensolaris.opengrok.web.SearchHelper,
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainenorg.opensolaris.opengrok.web.SortOrder,
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainenorg.opensolaris.opengrok.web.Suggestion"
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen%><%@
ad789b139a890a1b4f54d6aaaf6a3800581611bcTimo Sirainen
ad789b139a890a1b4f54d6aaaf6a3800581611bcTimo Siraineninclude file="projects.jspf"
ad789b139a890a1b4f54d6aaaf6a3800581611bcTimo Sirainen
ad789b139a890a1b4f54d6aaaf6a3800581611bcTimo Sirainen%><%!
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen private StringBuilder createUrl(SearchHelper sh, boolean menu) {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen StringBuilder url = new StringBuilder(64);
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen QueryBuilder qb = sh.builder;
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen if (menu) {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen url.append("search?");
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen } else {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen Util.appendQuery(url, "sort", sh.order.toString());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen if (qb != null) {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen Util.appendQuery(url, "q", qb.getFreetext());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen Util.appendQuery(url, "defs", qb.getDefs());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen Util.appendQuery(url, "refs", qb.getRefs());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen Util.appendQuery(url, "path", qb.getPath());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen Util.appendQuery(url, "hist", qb.getHist());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen if (sh.projects != null && sh.projects.size() != 0) {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen Util.appendQuery(url, "project", cfg.getRequestedProjectsAsString());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen return url;
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen%><%
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen/* ---------------------- search.jsp start --------------------- */
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen{
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen cfg = PageConfig.get(request);
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen long starttime = System.currentTimeMillis();
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen SearchHelper searchHelper = cfg.prepareSearch()
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen .prepareExec(cfg.getRequestedProjects()).executeQuery().prepareSummary();
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen if (searchHelper.redirect != null) {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen response.sendRedirect(searchHelper.redirect);
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen if (searchHelper.errorMsg != null
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen && searchHelper.errorMsg.startsWith(SearchHelper.PARSE_ERROR_MSG))
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen searchHelper.errorMsg = SearchHelper.PARSE_ERROR_MSG
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen + "<br/>You might try to enclose your search term in quotes, "
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen + "<a href=\"help.jsp#escaping\">escape special characters</a> "
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen + "with <b>\\</b>, or read the <a href=\"help.jsp\">Help</a> "
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen + "on the query language."
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen + "Error message from parser:<br/>" + searchHelper.errorMsg
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen .substring(SearchHelper.PARSE_ERROR_MSG.length());
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen if (searchHelper.errorMsg != null) {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen cfg.setTitle("Search Error");
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen } else {
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen cfg.setTitle("Search");
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen response.addCookie(new Cookie("OpenGrokSorting", searchHelper.order.toString()));
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen%><%@
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Siraineninclude file="httpheader.jspf"
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen%><body>
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen<div id="page">
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen <div id="whole_header">
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen <div id="header"><%@
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Siraineninclude file="pageheader.jspf"
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen%>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen </div>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <div id="Masthead"></div>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <div id="bar">
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <ul>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <li><a href="<%= request.getContextPath()
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %>/"><span id="home"></span>Home</a></li>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen </ul>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <%-- TODO: jel: IMHO it should be move to menu.jspf as combobox --%>
55bc6a7a0940ec48a68558ef70838991c5d301d2Timo Sirainen <div id="sortfield">
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <label for="sortby">Sort by</label>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <ul id="sortby"><%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen StringBuilder url = createUrl(searchHelper, true).append("&amp;sort=");
55bc6a7a0940ec48a68558ef70838991c5d301d2Timo Sirainen for (SortOrder o : SortOrder.values()) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen if (searchHelper.order == o) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %><li><span class="active"><%= o.getDesc() %></span></li><%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen } else {
55bc6a7a0940ec48a68558ef70838991c5d301d2Timo Sirainen %><li><a href="<%= url %><%= o %>"><%= o.getDesc() %></a></li><%
55bc6a7a0940ec48a68558ef70838991c5d301d2Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %></ul>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen </div>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen </div>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <div id="menu"><%@
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
bad5fa318c6c1384ab83bd72d53ce06593274c18Timo Siraineninclude file="menu.jspf"
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen%>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen </div>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen </div>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <div id="results"><%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen // TODO spellchecking cycle below is not that great and we only create
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen // suggest links for every token in query, not for a query as whole
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen if (searchHelper.errorMsg != null) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %><h3>Error</h3>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <p><%= Util.htmlize(searchHelper.errorMsg) %></p><%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen } else if (searchHelper.hits == null) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %><p>No hits</p><%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen } else if (searchHelper.hits.length == 0) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen List<Suggestion> hints = searchHelper.getSuggestions();
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen for (Suggestion hint : hints) {
55bc6a7a0940ec48a68558ef70838991c5d301d2Timo Sirainen %><p><font color="#cc0000">Did you mean (for <%= hint.name %>)</font>:<%
55bc6a7a0940ec48a68558ef70838991c5d301d2Timo Sirainen for (String word : hint.freetext) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %> <a href=search?q=<%= word %>><%= word %></a> &nbsp; <%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen for (String word : hint.refs) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %> <a href=search?refs=<%= word %>><%= word %></a> &nbsp; <%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen for (String word : hint.defs) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %> <a href=search?defs=<%= word %>><%= word %></a> &nbsp; <%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %></p><%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <p> Your search <b><%= searchHelper.query %></b> did not match any files.
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen <br/> Suggestions:<br/>
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen </p>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <ul>
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen <li>Make sure all terms are spelled correctly.</li>
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen <li>Try different keywords.</li>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <li>Try more general keywords.</li>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <li>Use 'wil*' cards if you are looking for partial match.</li>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen </ul><%
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen } else {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen // We have a lots of results to show: create a slider for
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen String slider = "";
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen int thispage; // number of items to display on the current page
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen int start = searchHelper.start;
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen int max = searchHelper.maxItems;
55bc6a7a0940ec48a68558ef70838991c5d301d2Timo Sirainen int totalHits = searchHelper.totalHits;
b2ed2b25c4c457ec1c99ebe5e9bd66a2e2f89cfdTimo Sirainen if (searchHelper.maxItems < searchHelper.totalHits) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen StringBuilder buf = new StringBuilder(4096);
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen thispage = (start + max) < totalHits ? max : totalHits - start;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen StringBuilder urlp = createUrl(searchHelper, false);
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen int labelStart = 1;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen int sstart = start - max * (start / max % 10 + 1) ;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen if (sstart < 0) {
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen sstart = 0;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen labelStart = 1;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen } else {
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen labelStart = sstart / max + 1;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen }
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen int label = labelStart;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen int labelEnd = label + 11;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen for (int i = sstart; i < totalHits && label <= labelEnd; i+= max) {
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen if (i <= start && start < i + max) {
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen buf.append("<span class=\"sel\">").append(label).append("</span>");
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen } else {
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen buf.append("<a class=\"more\" href=\"s?n=").append(max)
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen .append("&amp;start=").append(i).append(urlp).append("\">");
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen if (label == labelStart && label != 1) {
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen buf.append("&lt;&lt");
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen } else if (label == labelEnd && i < totalHits) {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen buf.append("&gt;&gt;");
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen } else {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen buf.append(label);
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen buf.append("</a>");
d8552f9f65e5ff64be5de9faf9a8171799a0bbecTimo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen label++;
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen slider = buf.toString();
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen } else {
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen // set the max index to max or last
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen thispage = totalHits - start;
6c2ce1d5bf17b21e804a079eb0f973b7ab83e0d8Timo Sirainen }
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %>
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen <p class="pagetitle">Searched <b><%= searchHelper.query
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %></b> (Results <b> <%= start + 1 %> - <%= thispage + start
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen %></b> of <b><%= totalHits %></b>) sorted by <%=
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen searchHelper.order %></p><%
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen if (slider.length() > 0) {
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen %>
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen <p class="slider"><%= slider %></p><%
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen }
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen %>
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen <table><%
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen Results.prettyPrint(out, searchHelper, start, start + thispage);
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen %>
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen </table>
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen <p><b>Completed in <%= System.currentTimeMillis() - starttime
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen %> milliseconds</b></p><%
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen if (slider.length() > 0) {
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen %>
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen <p class="slider"><%= slider %></p><%
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen }
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen %>
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen </div><%
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen }
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen searchHelper.destroy();
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen}
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen/* ---------------------- search.jsp end --------------------- */
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen%><%@
cdc8485491045d82bb98405d4b995f277d12838eTimo Sirainen
b2ed2b25c4c457ec1c99ebe5e9bd66a2e2f89cfdTimo Siraineninclude file="foot.jspf"
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen%>